Я пытаюсь получить доступ к данным в следующем массиве, но у меня проблемы с использованием.forEach. Я хочу получить доступ ко всем singleLine.text
но это не позволит мне. Я предполагаю, что на одном уровне есть несколько отдельных линий.
var a = [
{ boxedCharacters: { text: '1040043' } },
{ singleLine: { text: '東京都中央区日本橋新古町' } },
{ singleLine: { text: 'この度は、数多くのお店の中から当店を'} },
{ singleLine: { text: 'お選びご来店頂きまして誠にありがとう'} }
]
a.forEach(function(value){
console.log(value.singleLine.text)
})
Я пробовал это, но это не лучшее решение, так как он создаст пустой массив для boxedCharacters, потому что он не будет соответствовать переданному значению свойства. Кроме того, я мог бы иметь несколько boxedCharaters и другие ключи с тем же именем.
function genNewArray(jsonArray)
{return results.map(function(a){
return {[jsonArray]: a[jsonArray]}
})
}
var i = genArray(‘singleLine)
Любые лучшие идеи о том, как я могу получить доступ к ценностям?
Вы можете попробовать следующее:
const a = [
{ boxedCharacters: { text: '1040043' } },
{ singleLine: { text: '東京都中央区日本橋新古町' } },
{ singleLine: { text: 'この度は、数多くのお店の中から当店を'} },
{ singleLine: { text: 'お選びご来店頂きまして誠にありがとう'} }
];
const getSingleLine = o => (o&&o.singleLine);
const getText = o => (o&&o.text);
const getSingleLineText = o => getText(getSingleLine(o))
console.log(
a.map(getSingleLineText)
.filter(x=>!!x)//remove undefined
)
Или вы могли бы уменьшить объект до значения, и если значение не существует, возврат не определен:
const tryGet = keys => object =>
keys.reduce(
(o,key)=>
(o!==undefined && o[key]!==undefined)
? o[key]
: undefined,
object
);
const getSingleLineText = tryGet(["singleLine","text"]);
console.log(
a.map(getSingleLineText)
.filter(x=>!!x)//remove undefined
);
В первом случае это происходит из-за этого console.log(value.singleLine.text)
. Поскольку массив также имеет key
именем boxedCharacters
и внутри forEach
когда элемент { boxedCharacters: { text: '1040043' } },
он не найдет value.singleLine
. поэтому он потерпит неудачу
var a = [{
boxedCharacters: {
text: '1040043'
}
},
{
singleLine: {
text: '東京都中央区日本橋新古町'
}
},
{
singleLine: {
text: 'この度は、数多くのお店の中から当店を'
}
}, {
singleLine: {
text: 'お選びご来店頂きまして誠にありがとう'
}
}
]
a.forEach(function(value) {
if (value.singleLine) {
console.log(value.singleLine.text)
}
})
Вам просто нужно проверить, есть ли значение для singleLine или нет.
a.forEach(function(value){
if(a.singleLine) console.log(value.singleLine.text)
})
$.each(a, function(entryIndex, entry) {
$.each(this.singleLine, function() {
alert(this.text);
});
});
singleLine
.