Javascript多维数组问题

时间:2009-08-12 00:58:41

标签: javascript ajax multidimensional-array

以下是global.heights数组的示例:

[[190, 76, 209, 57, 114, 171, 76, 513, 209, 171, 76, 152, 76, 76, 190, 114, 95, 76, 76, 95, 57, 133, 114], [152, 76, 133, 38, 95, 133, 76, 342, 190, 114, 57, 152, 76, 57, 133, 76, 76, 76, 57, 76, 57, 76, 76], [], []]

我需要做的是让另一个数组成为全局数组的一部分(简单,类似于global.offset = new Array()工作正常)。 它需要看起来像这样:

[[190, 266, 475, ...], [...], [], []]

基本上每个地方都是迄今为止的价值。就像在global.offset [2]中添加的前三个一样,等等整个数组。

但如果我尝试这样的话:

for(i = 0, e < global.heights.length; i < e; i++) {
    for(j = 0, k < global.heights[1].length; j < k; j++) {
        global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]);
    }
}

如果我这样做,我会得到一个未定义的错误,即global.offset不是一个对象(但它已经初始化并且里面有四个数组。

我是JS的新手。

由于

3 个答案:

答案 0 :(得分:0)

这看起来不对:

    for(j = 0, k < global.heights[1].length; j < k; j++) {
        global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]);
    }

您的意思是k = global.heights[i].length(注意=和i替换1)?

除非你在数组中放入字符串,否则你不需要使用Number()。

那说不知道全局定义在哪里我无法提供更多帮助。

答案 1 :(得分:0)

所以问题是你在循环之外定义你的数组。在尝试设置偏移数组之前,请将其定义为数组。

此页面更能解释我的意思: link text

答案 2 :(得分:0)

正如IPX Ares所说:在循环之外声明你的数组。还要确保在访问“global.offset [i]”的“[j]”成员之前实例化“global.offset [i]”。

global.offset = global.offset || []; // <- See this!
for(i = 0, e < global.heights.length; i < e; i++) {
    for(j = 0, k = global.heights[1].length; j < k; j++) { // I think you mean "k = global.heights[1].length"?
        global.offset[i] = global.offset[i] || []; // <- and this!
        global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]);
    }
}