Javascript:重构对象数组而不覆盖键
Posted
技术标签:
【中文标题】Javascript:重构对象数组而不覆盖键【英文标题】:Javascript: Refactor array of objects without overwriting keys 【发布时间】:2019-06-17 16:11:01 【问题描述】:我有一个要重构的对象数组(制作不同的结构)..
现有数组:
[ 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 语法。
【问题讨论】:
【参考方案1】:使用 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)
【讨论】:
是的!非常感谢你,Ariz。你向我介绍了 .reduce 的一个很棒的功能,而且答案非常优雅。以上是关于Javascript:重构对象数组而不覆盖键的主要内容,如果未能解决你的问题,请参考以下文章
如何根据javascript中的键合并和替换两个数组中的对象?
原生JavaScript对象数组去重,重构为对象{pro1:[hash], pro02: [hash]}
用 Javascript 中的键值对重构对象数组并输出或发出它以用 mongoose 和 MongoDB 保存它?