2016-02-23 15 views
4

我有一個多維數組,看起來像這樣:使用Javascript - 結合多維數組的索引

[ 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"] 
] 

我所希望做到的是通過增加的值都結合成一個單一的陣列數組的索引。

預期結果:

[4,8,12,16] //(adding the 4 array values with appropriate index) 

我看到Lodash有一個方法_.zip,但不接受數組作爲輸入的數組,得到正確的值。有一個容易做到這一點?

回答

3

如果_.zip不接受數組的數組作爲輸入,有一個技術來實現它。 _.zip.apply(null, array)

它可以像下面這樣完成。 (請注意您的底層元素都是字符串,所以有一個步驟將它們轉換爲數字。)

var data =[ 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"] 
]; 

var result = _.map(_.zip.apply(null, data), function (n) { 
    return _.sum(_.map(n, function(x) { return +x; })); 
}); 

console.log(result); 

The demo.

+0

完美!奇蹟般有效! –

2

我正在解釋你的問題,如下所示:將數組中的每個元素映射到它的長度加上一個元素的值。這是你可以做到的一個方法。

x = [ 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"], 
    ["1","2","3","4"] 
] 
result = x.map(function(a) { 
    return a.length; 
} 
for (i = 1; i < result.length; ++i) { 
    result[i] += result[i - 1]; 
}