javascript - 将数据推送到 for 循环 JavaScript 中的数组中

标签 javascript arrays

有人可以解释一下为什么会这样吗

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/

相关文章:

javascript - 使用 e4x 在 Flex 中编辑 XML

javascript - react-redux:元素类型无效

php - 通过 PHP 将 json 对象的列插入新列

php - 递归地从多维数组中删除特定键

JavaScript "Counter"对象,它是什么?

php - 在 php 代码中使用 JS 变量?

javascript - ES6 Spread 运算符(Rest Parameter) - Safari 9 语法失败

arrays - 如何将命令输出存储到 Ansible 中的数组中?

c - C 中动态分配二维数组的运行时错误

javascript - 在 Angular js 中使用 ng-repeat 指令在表中显示数组数据