通过对象迭代 JavaScript
iterations thru objects JavaScript
大家好,我有一个关于对象迭代的简短问题
这是我的代码
[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 次以及如何每人做一次
谢谢
你只需要一个 for
循环:
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
},
}
for (var key in names.lastnames) {
console.log(names.lastnames[key]);
}
您正在使用两个循环。外层循环迭代所有 names
个对象键,即 first, second, third and 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));
在现代浏览器或节点中可以使用 Object.values()
其中 returns 数组。
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
}
}
console.log(Object.values(names.lastnames).join());
大家好,我有一个关于对象迭代的简短问题
这是我的代码 [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 次以及如何每人做一次
谢谢
你只需要一个 for
循环:
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
},
}
for (var key in names.lastnames) {
console.log(names.lastnames[key]);
}
您正在使用两个循环。外层循环迭代所有 names
个对象键,即 first, second, third and 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));
在现代浏览器或节点中可以使用 Object.values()
其中 returns 数组。
var names = {
first: 'Sasha',
second: 'Andrey',
third: 'Pasha',
lastnames: {
firstL: 'Oga',
secondL: 'opa',
thirdL: 'uka'
}
}
console.log(Object.values(names.lastnames).join());