gpt4 book ai didi

javascript - For 循环迭代 < vs <= JavaScript 基础

转载 作者:行者123 更新时间:2023-11-30 08:25:41 25 4
gpt4 key购买 nike

我无法弄清楚为什么这段代码会给我

TypeError: Cannot read property '0' of undefined

function fromListToObject(array) {
// make new empty object to store key:value in
var obj = {};
// loop over the given array
for (var i = 0; i <= arr.length; i++){
//every iteration keys gets stored with new key
var keys = arr[i][0];
// same here
var values = arr[i][1];
//pushing new key:value into obj
obj[keys] = values;
}
return obj;
}
var arr= [['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', '5']];
var result = fromListToObject(arr);

console.log(result);

我尝试过的:当我仅使用 i < arr.length 在 fromListToObject() 函数内运行 for 循环时有用。我试过寻找答案,但我可能以错误的方式提问。循环不也应该与“=”运算符一起工作吗?

最佳答案

如果您有一个包含 10 个元素的数组,并且您从 1 开始计数- 最后一个元素将放置在 10th 处地方。

但是 - 如果您以 0 开始计数(这是数组的工作方式),最后一个位置将是 length - 1 (在这个例子中是 9)。

在您的示例中 - for循环以 0 开始并且应该算到数组中的最后一个元素,它位于 length - 1 中位置。
那个地方也是<length (因为当我们到达 =length 时 - 这是“数组外” - 您正在尝试访问不存在的位置中的元素):

for (var i = 0; i < arr.length; i++) {
...
}

注意完全一样的方法,你可以这样做:

for (var i = 1; i <= arr.length; i++) {
// Note that here you would want to access the elements
// in the array using arr[i-1]
...
}

但这不太常见。

您的另一个选择是使用 forEach 数组的方法:

arr.forEach(function(element) {
...
});

关于javascript - For 循环迭代 < vs <= JavaScript 基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com