我有一个包含“年”键和“日期”键的对象数组,如下所示:
var fullDates = [
{ 'year': '2018', date: '2018-01'},
{ 'year': '2017', date: '2017-02'},
{ 'year': '2016', date: '2016-03'},
{ 'year': '2018', date: '2018-04'},
{ 'year': '2017', date: '2017-05' },
{ 'year': '2016', date: '2016-06'}
];
我想创建一个包含年份和日期的新对象数组,但其中“日期”键是一个数组,如下所示。我该怎么做?
var final = [
{ 'year': '2018', date: ['2018-01', '2018-02']},
{ 'year': '2017', date: ['2017-03', '2017-04']},
{ 'year': '2016', date: ['2016-04', '2016-06']}
]
最佳答案
您可以使用 Array.reduce()
操作来获取该输出:
var fullDates = [
{ 'year': '2018', date: '2018-01'},
{ 'year': '2017', date: '2017-02'},
{ 'year': '2016', date: '2016-03'},
{ 'year': '2018', date: '2018-04'},
{ 'year': '2017', date: '2017-05' },
{ 'year': '2016', date: '2016-06'}
];
var final = fullDates.reduce((acc, obj)=>{
var existingObj = acc.find(item => item.year === obj.year);
if(existingObj){
existingObj.date.push(obj.date);
return acc;
}
obj.date = [obj.date];
acc.push(obj);
return acc;
}, []);
console.log(final);
关于javascript - 根据先前对象数组中的共享属性创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363146/