我在javascript中实现了一个路由算法,但是当我在数组中指定一个负数变量时,给出了这个错误:数组长度无效。
var node = new Array()
node[0] = new Array(6,7)
node[1] = new Array(5,-4,8)
node[2] = new Array(-2) //Here, invalid array length
我不知道如何解决此错误。
答案 0 :(得分:11)
如果您尝试初始化仅包含负数的数组,请使用文字语法:
var a = [-2];
Array
构造函数的问题在于,当仅使用一个参数调用它时,此数字将用作新数组的length
,例如:
var b = new Array(5);
b.length; // 5
我建议您坚持literal syntax以避免这些歧义。
答案 1 :(得分:3)
不要那样声明数组!
var node = [6, 7];
答案 2 :(得分:1)
这是因为一个整数参数设置了新数组的大小。
答案 3 :(得分:1)
array constructor documentation显示以下内容
var arr1 = new Array(arrayLength);
var arr2 = new Array(element0, element1, ..., elementN);
因此,如果您只使用一个参数,它会创建一个arrayLength
的数组;否则,如果您使用多个,它将使用这些值填充数组。
然而,正如其他人所指出的那样,最好使用文字符号*
var node = [
[6, 7],
[5, -4 8],
[-2]
];
*数组文字符号略微快于new Array()
,但这是微观优化,在大多数情况下并不是非常重要。