merge - Javascript:重构对象数组而不覆盖键
问题描述
我有一组要重构的对象(制作不同的结构)..
现有数组:
[ 0: { category: 100 },
1: { category: 101 },
2: { category: 102 },
3: { tag: 200 },
4: { tag: 201 },
5: { tag: 202 },
6: { year: 300 },
7: { year: 301 },
8: { year: 302 }
]
想要数组:
[ 0: { category: [ 100, 101, 102 ] },
1: { tag: [ 200, 201, 202 ] },
2: { year: [ 300, 301, 302 ] }
]
任何帮助是极大的赞赏。欢迎使用 ES6 语法。
解决方案
使用 Array.prototype.reduce
let input = [{ category: 100 },
{ category: 101 },
{ category: 102 },
{ tag: 200 },
{ tag: 201 },
{ tag: 202 },
{ year: 300 },
{ year: 301 },
{ year: 302 }
];
let output = input.reduce((acc, curr) => {
let key = Object.keys(curr)[0];
acc[key] = acc[key] ? [curr[key], ...acc[key]] : [curr[key]];
return acc;
}, {});
console.log(output)
推荐阅读
- tensorflow - Tensorflow Estimator API 在分布式模式下不起作用
- git - Git 桌面到桌面克隆访问
- spring - 带有内存数据库的 Spring Boot TEST
- ios - 如何异步更新 UITableView?
- python-2.7 - CouchDB $in 查询导致错误:400 客户端错误:错误请求 bad_arg 运算符 $in 的错误参数:
- x86 - 与 CPU 微架构相关的奇怪现象
- angular - 如何触发 NgxsOnInit?
- c# - Service Fabric 本地群集未运行
- javascript - 使用 CryptoJS 在 JavaScript 中加密和解密视频文件
- c++ - 从 std::array 创建一个十六进制代表