创建 属性 并使用数组元素对其进行初始化时出现 TypeError
TypeError when creating a property and initialising it with an array element
我正在 JavaScript 中编写我的第一个程序,我的想法是创建一个接受整数数组的函数,并使用从 属性 中获取的值制作一个列表(数据结构)数组元素(不知道如何迭代进行)。
该列表将是这样的:
{
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
}
我收到一个我不完全理解的错误。
这是程序:
function arrayToList(list, array, n)
{
list.value = array[n];
if( n < array.length - 1 ) arrayToList(list.rest, array, n+1);
}
const array = [1,2,3];
let list = {};
arrayToList(list, array, 0);
console.log(list);
这是错误:
list.value = array[n];
^
TypeError: Cannot set property 'value' of undefined
我在网上找到了以下定义:
In JavaScript if a variable has been declared, but has not been
assigned a value, is automatically assigned the value undefined .
Therefore, if you try to access the value of such variable, it will
throw Uncaught TypeError cannot set property of undefined .
我不确定 undefined
是指 list.value
还是 arra[n]
,但据我所知(很少有 JS)该语句合法地创建和初始化value
属性 的 list
对象,所以问题应该是 array[n]
.
但是n
是0
到array.lenght - 1
之间的整数,所以array[n]
不能未定义。
请解释一下它是如何工作的。
这里的关键是问题不是出现在第一次迭代中,而是出现在第二次迭代中。
您拨打 arrayToList(list, array, 0)
没问题。但是,在该函数内部,有一个对 arrayToList(list.rest, array, n+1)
的递归调用。 list.rest
什么都不是。
老实说,我不太确定您在这种情况下期望做什么。目前尚不清楚您期望的 input/output 应该是什么。我认为您可能有兴趣查看这些函数,它们可以帮助您处理整个数组:
Array.map()
使您能够处理数组中的每一项,返回一个新数组。
Array.reduce()
获取整个数组并允许缩减为单个值。 (似乎最接近您的要求...减少到单个对象。)
我正在 JavaScript 中编写我的第一个程序,我的想法是创建一个接受整数数组的函数,并使用从 属性 中获取的值制作一个列表(数据结构)数组元素(不知道如何迭代进行)。
该列表将是这样的:
{
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
}
我收到一个我不完全理解的错误。
这是程序:
function arrayToList(list, array, n)
{
list.value = array[n];
if( n < array.length - 1 ) arrayToList(list.rest, array, n+1);
}
const array = [1,2,3];
let list = {};
arrayToList(list, array, 0);
console.log(list);
这是错误:
list.value = array[n];
^
TypeError: Cannot set property 'value' of undefined
我在网上找到了以下定义:
In JavaScript if a variable has been declared, but has not been assigned a value, is automatically assigned the value undefined . Therefore, if you try to access the value of such variable, it will throw Uncaught TypeError cannot set property of undefined .
我不确定 undefined
是指 list.value
还是 arra[n]
,但据我所知(很少有 JS)该语句合法地创建和初始化value
属性 的 list
对象,所以问题应该是 array[n]
.
但是n
是0
到array.lenght - 1
之间的整数,所以array[n]
不能未定义。
请解释一下它是如何工作的。
这里的关键是问题不是出现在第一次迭代中,而是出现在第二次迭代中。
您拨打 arrayToList(list, array, 0)
没问题。但是,在该函数内部,有一个对 arrayToList(list.rest, array, n+1)
的递归调用。 list.rest
什么都不是。
老实说,我不太确定您在这种情况下期望做什么。目前尚不清楚您期望的 input/output 应该是什么。我认为您可能有兴趣查看这些函数,它们可以帮助您处理整个数组:
Array.map()
使您能够处理数组中的每一项,返回一个新数组。Array.reduce()
获取整个数组并允许缩减为单个值。 (似乎最接近您的要求...减少到单个对象。)