This question already has answers here:
Most efficient method to groupby on an array of objects
(42个答案)
2年前关闭。
我有一个带有日期字段的项目数组。我需要按日期对项目进行分组,以便在页面上可以按该日期对它们进行分组。像这样:
这可行,但是我正在做很多循环。有更高效的解决方案吗?还是我的方法很好?我已经简化了代码,但实际上我将拥有更大的数据集。
https://jsfiddle.net/vn1wLok6/
(42个答案)
2年前关闭。
我有一个带有日期字段的项目数组。我需要按日期对项目进行分组,以便在页面上可以按该日期对它们进行分组。像这样:
Monday 1st:
-event 1
-event 2
Tuesday 2nd:
-event 3
这可行,但是我正在做很多循环。有更高效的解决方案吗?还是我的方法很好?我已经简化了代码,但实际上我将拥有更大的数据集。
const items=[{name: '1',date: '10 dec'},{name: '2',date: '10 dec'},{name: '3',date: '11 dec' }];
const dates = items.map(item=> item.date)
const datesNoDupe = Array.from(new Set(dates));
const output = datesNoDupe.map(date=>{
return items.filter(item=>{
return item.date === date;
});
})
console.log(output)
https://jsfiddle.net/vn1wLok6/
最佳答案
您可以使用array#reduce
在单个迭代中对数组进行分组。
const items=[{name: '1',date: '10 dec'},{name: '2',date: '10 dec'},{name: '3',date: '11 dec' }];
var result = items.reduce((r, {name, date}) => {
r[date] = r[date] || [];
r[date].push({name,date});
return r;
},{});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 在JavaScript中按字段对数组项进行分组的最有效方式? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47805609/
10-12 13:46