为了账号安全,请及时绑定邮箱和手机立即绑定

将两个 javascipt 数组组合成一个对象并将值相加

将两个 javascipt 数组组合成一个对象并将值相加

达令说 2022-07-01 15:53:48
我想组合以下两个相同大小的数组:var depts = [ 'A', 'D', 'M', 'G', 'D', 'B', 'D', 'A', 'A' ];var cnts  = [  3,   7,  15,   2,   9,   5,   12,  4,   8  ];在这样的对象中,注意 cnts 是每个部门的总数:{A: 15, D: 19, M: 15, G: 2, B: 5}通常我在网站集成之前执行数据操作,但是我想开始在 JavaScript 中执行它。一些代码大致模仿了我正在尝试做的事情。var obj = {};for(var i = 0; i < depts.length; i++){    console.log(depts[i], cnts[i]);    obj[depts[i]] = cnts[i]; // <-  don't know how to increment assignment }console.log(obj);此代码创建一个对象,但不会按部门对 cnts 求和:{A: 8, D: 12, M: 15, G: 2, B: 5}
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

只需添加一个检查属性是否存在并分配零。稍后将值添加到它。


var depts = ['A', 'D', 'M', 'G', 'D', 'B', 'D', 'A', 'A'],

    cnts = [3, 7, 15, 2, 9, 5, 12, 4, 8],

    obj = {};


for (var i = 0; i < depts.length; i++) {

    if (!obj[depts[i]]) obj[depts[i]] = 0; // use an initial value

    obj[depts[i]] += cnts[i];              // add value

}


console.log(obj);


查看完整回答
反对 回复 2022-07-01
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

const depts = [ 'A', 'D', 'M', 'G', 'D', 'B', 'D', 'A', 'A' ];

const cnts  = [  3,   7,  15,   2,   9,   5,   12,  4,   8  ];

let obj = {};


// loop over the first array, if not already in obj, put a zero before adding

depts.forEach((dept,i) => obj[dept] = (obj[dept] || 0) + cnts[i])


console.log(obj);


查看完整回答
反对 回复 2022-07-01
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

var depts = [ 'A', 'D', 'M', 'G', 'D', 'B', 'D', 'A', 'A' ];

var cnts  = [  3,   7,  15,   2,   9,   5,   12,  4,   8  ];


const lkp = depts.reduce((lkp, cur, i) => {

    return {

        ...lkp,

        [cur]: ~~lkp[cur] + cnts[i]

    }

}, {})

console.log (lkp)


查看完整回答
反对 回复 2022-07-01
  • 3 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信