我在弄清楚为什么这个代码块给我
时遇到了麻烦TypeError:无法读取未定义的
的属性'0'
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) {
...
});