首页 > 解决方案 > 如何在Javascript中组合多个字典?

问题描述

var dictA = { male: 10, female: 20, unassigned: 30 };
var dictB = { male: 11, female: 21, unassigned: 31 };
var dictC = { male: 12, female: 22, unassigned: 32 };

有没有比多个循环更简单的方法来产生如下结果:

{
    male: [10, 11, 12],
    female: [20, 21, 22],
    unassigned: [30, 31, 32]
}

我不确定“组合”是否是正确的词。

标签: javascriptlistdictionary

解决方案


这仍然需要几个循环,但也许reduce和的组合for...in可以雄辩地完成此任务:

var dictA = { male: 10, female: 20, unassigned: 30 };
var dictB = { male: 11, female: 21, unassigned: 31 };
var dictC = { male: 12, female: 22, unassigned: 32 };

const res = [dictA, dictB, dictC].reduce((acc, el) => {
  for (let key in el) {
    acc[key] = [...acc[key] || [], el[key]];
  };
  return acc;
}, {})

console.log(res);


推荐阅读