有人可以解释一下为什么会这样吗
itemIds = [];
for (var i = 0; i <= data.length; i++) {
itemIds.push(data[0].item);
}
console.log(itemIds); // outputs as expected, the same thing, data.length times
但这不起作用(唯一的变化是将
i
添加到 push()
中)itemIds = [];
for (var i = 0; i <= data.length; i++) {
itemIds.push(data[i].item);
}
console.log(itemIds); // TypeError: Cannot read property 'item' of undefined
我需要这样做
data
在此示例中来自 Angular $http
调用,并返回一个对象。我不明白为什么静态放入 0 有效,但试图让它遍历每个 data.item
才不是。
最佳答案
这是因为你的变量 i
最终将增加超过数组的长度。
您需要从 i <= data.length
更改您的 for 循环至i < data.length
.
这将确保 i
变量将始终在数组的范围内。
考虑到索引是从零开始的,但是长度会从一开始计数,所以长度总是比最高索引大一。
关于javascript - 将数据推送到 for 循环 JavaScript 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40368681/