js,二维数组统计

var obj = [
            { a: 1, b: 2, c: 3 },
            { a: 4, b: 5, c: 6 },
            { a: 7, b: 8, c: 9 },
            { a: 2, b: 3, c: 10 }
        ];

clipboard.png
总计那块为从底部加起,也就是先是sum4=a4+b4+c5=2+3+10=15,为总计最后一个;倒数第二个为sum3=sum4+c3=15+9=24;第二个为sum2=sum3+c2=24+6=30;第一个为sum1=sum2+c1=30+3=33;这样的需求,我应该怎么写?

阅读 2.4k
2 个回答
obj.reduceRight((iter, val, idx) => {
    if(idx === obj.length - 1) {
        val.sum = val.a + val.b + val.c
    } else {
        val.sum = val.c + iter[0].sum
    }
    iter.unshift(val)
    return iter
}, [])

ps:没有找到比楼上更好的方法了。

let result = 0;

obj.reverse();
obj.forEach((item, index) => {
    if (index === 0) {
        result += item.a + item.b + item.c;
    } else {
        result += item.c;
    }
    item.result = result;
});
obj.reverse();

console.log(obj);

输出
[ { a: 1, b: 2, c: 3, result: 33 },
{ a: 4, b: 5, c: 6, result: 30 },
{ a: 7, b: 8, c: 9, result: 24 },
{ a: 2, b: 3, c: 10, result: 15 } ]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题