数组构造和负数

时间:2010-05-19 19:38:25

标签: javascript arrays negative-number

我在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

我不知道如何解决此错误。

4 个答案:

答案 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(),但这是微观优化,在大多数情况下并不是非常重要。