大家好,我有一个关于对象迭代的简短问题
这是我的代码 [ https://jsfiddle.net/Ar2zee/9g91ouq6/]
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
},
}
for (var keys in names) {
for (var newKeys in names.lastnames) {
console.log(names.lastnames[newKeys]);
}
}
我的目标是记录一次所有的lastNAmes
oga, opa, uka
,现在我的结果是每个姓氏的 4 次,你能解释一下为什么吗现在是 4 次以及如何每次制作一次
谢谢
最佳答案
您正在使用两个循环。外部循环迭代所有 names
对象键,它们是 first、second、third 和 lastnames
。当内部循环遍历 names.lastnames
时,它们中的每一个都将记录在外部循环的每次迭代中。要做你想做的,只需删除外循环:
for( var newKeys in names.lastnames){
console.log(names.lastnames[newKeys]);
}
如果您在实际代码中使用它,请确保在使用 for in
循环时检查 hasOwnProperty
:
for( var newKeys in names.lastnames){
if (names.lastnames.hasOwnProperty(newKeys)) console.log(names.lastnames[newKeys]);
}
旁注:
如果你只想获取names.lastnames中的所有值,你也可以使用Object.values()
:
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
}
};
console.log(Object.values(names.lastnames));
关于javascript - 通过对象 JavaScript 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066105/