Javascript - 合并带有索引的多维数组

4

我有一个多维数组,它看起来像这样:

[  
  ["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方法,但是它不接受数组的数组作为输入以获得正确的值。是否有一种简单的方法来实现这一点?
2个回答

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);

这是演示链接。


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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接