0
let list= [["现金",12,1,8],["算款",5,0,0],["回购",1,0,0],["到期",10,0,20],["存款",0,10,0],["其它",0,50,0]]

//每个数组里面对应下标累积相加,最后希望得到下面结果,请问该用什么方法去实现呢
{"0":"合计","1":28,"2":61,"3":28}
http_404 143
2018-12-07 提问

查看全部 3 个回答

0

放了数据测了一下这个应该是运行最快的

var list= [["现金",12,1,8],["算款",5,0,0],["回购",1,0,0],["到期",10,0,20],["存款",0,10,0],["其它",0,50,0]];
function test2(list){
 var obj = {'0':'合计'};
 for(var x=0;x<list.length;x++){
   for(var i=0;i<list[x].length;i++)
    i>0&&(obj[i]=obj[i]==null?list[x][i]:obj[i]+list[x][i]);
}
  return obj;
}
test2(list);

推荐答案

1

已采纳

这个情景下用reduce比较符合语义

let list = [['现金', 12, 1, 8], ['算款', 5, 0, 0], ['回购', 1, 0, 0], ['到期', 10, 0, 20], ['存款', 0, 10, 0], ['其它', 0, 50, 0]];

let result = list.reduce((res, arr) => {
  arr.forEach((num, index) => {
    if (index) {
      res[index] = (res[index] || 0) + num;
    }
  });
  return res;
}, {'0': '合计'});

console.log(result);

你可能感兴趣的

推广链接