以二维数组分配对象

时间:2013-06-22 20:05:47

标签: javascript arrays

假设我有一个如下对象:

function node(xVal, yVal, nodeType) {
    this.xVal = xVal; // x-coordinate of node
    this.yVal = yVal; // y-coordinate of node
    this.nodeType = nodeType; // node type - outside the scope of this question
}

为了在x-by-y虚拟平面上创建一系列节点,我按如下方式指定了一个二维数组:

var ROWS = 3; // number of rows in the array
var COLS = 10; // number of columns in the array
var Nodes = new Array(ROWS);

for (var i=0; i < ROWS; i++) {
    for (var j=0; j < COLS; j++) {
        Nodes[i][j] = new node(0, 0, "Type A");
    }
}

我期待上面的嵌入式for循环允许我初始化3x10数组,每个数组都带有'node'对象,但似乎有些东西导致错误。任何想法1)可能导致错误的原因,以及2)如何改进逻辑将非常感激!

2 个答案:

答案 0 :(得分:1)

由于您未在第一维上初始化新数组,因此导致错误。尝试在第二次循环之前放置Nodes[i] = [];

此外,您不必像这样初始化数组。你可以只是var Nodes = [];

答案 1 :(得分:0)

您也应该定义内部数组。

for (var i=0; i < ROWS; i++) {
    Nodes[i] = new Array(COLS);
    for (var j=0; j < COLS; j++) {
        Nodes[i][j] = new node(0, 0, "Type A");
    }
}