阅读此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”的字母,然后对其他键执行相同的操作。
为什么呢?预期的输出是:
names
john
chris
addresses
10 king street
20 king street
答案 0 :(得分:1)
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()
。
答案 1 :(得分:0)
要访问这些值,请使用this.payload[prop]
for (const prop in this.payload) {
console.log(prop); //names
for (const item of this.payload[prop]) {
console.log(item);
}
}