javascript - 如何在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]
}
我不确定“组合”是否是正确的词。
解决方案
这仍然需要几个循环,但也许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);
推荐阅读
- node.js - 三重 DES Node.js 密钥/IV 长度问题
- sql - 根据最大分类出现过滤表
- postgresql - PostgreSQL按另一列值的范围自动增加列
- django - 通过 jsonb 字段执行 Django 加入和分组
- php - 如何在restful api中验证来自post的数据
- c++ - 使用包含互斥锁的类的方法实例化 cpp11 线程
- android - Android 错误:使用对话框时无法从可绘制资源中找到 ColorStateList
- python - 多处理 - 取消池中剩余的作业而不破坏池
- java - 如何自定义 Java GraphQL 错误响应
- maya - 构建后重命名 bazel 输出(扩展)