在二维数组中动态创建索引

时间:2013-04-15 21:13:27

标签: javascript arrays dynamic indexing

使用此脚本时出现问题。它遍历二维数组并将每个相应的索引加在一起。所以基本上是arr [0] [1] + arr [0] [2] + arr [0] [3] ... arr [1] [1] + arr [1] [2] + arr [1] [3 ] ......等等。

第一个工作正常。所以我的逻辑还可以。我的问题是我无法动态创建索引。我不认为推动会起作用,因为我在这里总结了价值。

var cat_stats_week_radar = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0]];


    for (var i = 0; i < cat_stats_week.length; i++) {
        for (var j = 0; j < cat_stats_week[0].length; j++) {
            cat_stats_week_radar[0][j] += +(cat_stats_week[i][j]);
        }

}

这个不起作用,我没有收到错误,只是一堆NaN值。

var cat_stats_week_radar = [[]];


    for (var i = 0; i < cat_stats_week.length; i++) {
        for (var j = 0; j < cat_stats_week[0].length; j++) {
            cat_stats_week_radar[0][j] += +(cat_stats_week[i][j]);
        }

}

以下是我正在使用的阵列。

要添加的数组:

var cat_stats_week = [
[0,0,0,0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,0,0,0,0,0,1,0],
[0,0,1,0,0,0,0,0,0,0,0,0,0,0]
];

产生的数组:

var cat_stats_week_radar = [[0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 0]];

1 个答案:

答案 0 :(得分:2)

您需要使用正确数量的零来初始化它:

var cat_stats_week_radar = [[]];

for (var i = 0; i < cat_stats_week[0].length; i++) {
    cat_stats_week_radar[0].push(0);
}

使用Underscore.js

_.map(_.zip.apply(null, cat_stats_week), function(a) {
    return _.reduce(a, function(a, b) {
        return a + b
    })
});