JavaScript 2D数组未捕获的TypeError

时间:2012-05-11 17:28:15

标签: javascript arrays

处理我需要向数组添加点的项目。以下是创建然后尝试将对象添加到数组的代码:

var points = [];
    points[0] = [];
    points[0][0] = 0; //x-coord
    points[0][1] = 0; //y-coord

points[points.length][0] = x; //Breaks on this line
points[points.length][1] = y;

我得到的确切错误是未捕获的TypeError:无法设置未定义的属性'0'。每次按下按钮时都会运行此代码,其他值已经设置为ints。我认为JavaScript允许你在数组中设置值吗?

2 个答案:

答案 0 :(得分:2)

最后一个数组索引是points.length - 1。现在,您正在寻找超出数组末尾的元素(undefined)并尝试为其“0”属性赋值x。不允许在undefined上设置属性。

答案 1 :(得分:1)

你的数组包含:

var points = [
    [0,0]
]

然而

points[points.length]
//is
points[1]

不存在。你必须先创建数组,然后才能真正添加​​数据

Here's a sample

var length = points.length;  //cache value, since length is "live"
points[length] = [];         //using the cached length, create new array
points[length][0] = x;       //add values
points[length][1] = y;