1 回答
TA贡献1744条经验 获得超4个赞
我使用您的模拟数据整理了一个 CodeSandbox React 示例。你可以在这里查看。
我在那里写了一个函数,groupBy它可能是你正在寻找的。它的功能类似于lodash groupBy 方法,如果您可以将 lodash 添加到项目中,则可以使用该方法。
顺便说一句,这是 groupBy 函数的作用:
const events = [
{ date: "2020-04-19", description: "Meeting", startTime: "11:00", endTime: "12:00" },
{ date: "2020-04-19", description: "Coference", startTime: "18:00", endTime: "19:00" },
{ date: "2020-04-20", description: "Team Coference", startTime: "18:00", endTime: "19:00" },
{ date: "2020-04-21", description: "Happy hour cocktail" },
{ date: "2020-04-22", description: "MEditation Class" },
{ date: "2020-04-24", description: "MEditation Class" },
];
const groupBy = (arr, criteria) =>
arr.reduce((obj, item) => {
let key = typeof criteria === "function" ? criteria(item) : item[criteria];
if (!obj.hasOwnProperty(key)) obj[key] = [];
obj[key].push(item);
return obj;
}, {});
const grouped = groupBy(events, "date");
console.log(grouped);
希望这可以帮助,
添加回答
举报