javascript - How do I loop an array of objects and return it's value inside the array?
问题描述
For some reason it's returning both the key and value an excessive number of times. What am I doing wrong?
function loopAnArrayOfObjects(arrayOfObjects) {
for (var i = 0; i < arrayOfObjects.length; i++) {
for (var key in arrayOfObjects) {
console.log(arrayOfObjects[key]);
}
}
}
loopAnArrayOfObjects([{a: 1, b: 2}, {z: 5, y: 6}, {q: 14} ]);
// expected console output:
// 1
// 2
// 5
// 6
// 14
loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);
// expected console output:
// false
// true
// swims
// s
// p
// e
解决方案
在每次迭代中,当前元素/对象是arrayOfObjects[i]
,这是您应该使用的。
function loopAnArrayOfObjects(arrayOfObjects) {
for (var i = 0; i < arrayOfObjects.length; i++) {
for (var key in arrayOfObjects[i]) {
console.log(arrayOfObjects[i][key]);
}
}
}
loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);
或者,您可以使用for ... of
仅遍历没有索引的元素。
function loopAnArrayOfObjects(arrayOfObjects) {
for(const obj of arrayOfObjects){
for (const key in obj) {
console.log(obj[key]);
}
}
}
loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);