读完这篇文章后SO post我的数据结构循环仍然存在问题:
users:
{
'names': ['john','chris'],
'addresses': ['10 king street', '20 king street'],
}
循环:
for (const prop in this.payload) {
console.log(prop); //names
for (const item of prop) {
console.log(item); //n //a //m //e //s
}
}
它似乎正在输出键“名称”的字母,然后对其他键执行相同的操作。
为什么?预期输出为:names
john
chris
addresses
10 king street
20 king street
最佳答案
prop
是一个字符串。如果您循环遍历一个字符串,您将循环遍历它的字符,这就是您所看到的。
相反,获取该属性名称引用的值,并循环该值:
this.payload = {
'names': ['john', 'chris'],
'addresses': ['10 king street', '20 king street'],
};
for (const prop in this.payload) {
console.log(prop); //names
for (const item of this.payload[prop]) {
console.log(item);
}
}
更好的是,使用Object.entries()
:
this.payload = {
'names': ['john','chris'],
'addresses': ['10 king street', '20 king street'],
};
for (const [prop, items] of Object.entries(this.payload)) {
console.log(prop);
for (const item of items) {
console.log(item);
}
}
或者,如果您不关心属性名称,则可以使用 Object.values()
。
关于javascript - 输出嵌套数组,输出键而不输出内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489795/