2 回答
TA贡献1921条经验 获得超9个赞
您可能想要做的是将数据分组而不是过滤/删除项目。
所以如果你从一个形状开始
[
{name: 'bloodline', date: '2020-07-04' },
{name: 'celtics', date: '2020-07-04' },
{name: 'air dior', date: '2020-07-08' },
{name: 'bloodline 2.0', date: '2020-07-08' },
]
你可能想把它改成类似
{
'2020-07-04': [
{name: 'bloodline', date: '2020-07-04' },
{name: 'celtics', date: '2020-07-04' },
],
'2020-07-08': [
{name: 'air dior', date: '2020-07-08' },
{name: 'bloodline 2.0', date: '2020-07-08' },
]
}
或者嵌套数组可能更容易在反应中使用
[
{
date: '2020-07-04',
items: [
{name: 'bloodline', date: '2020-07-04' },
{name: 'celtics', date: '2020-07-04' },
],
}, {
date: '2020-07-08',
items: [
{name: 'air dior', date: '2020-07-08' },
{name: 'bloodline 2.0', date: '2020-07-08' },
]
}
]
然后您将映射项目并仅渲染对象键或外部date
Lodash 有一个groupBy你可以使用的函数(https://lodash.com/docs/#groupBy),或者这里是一个独立的实现
TA贡献1830条经验 获得超3个赞
假设您的 API 的响应是这样的:
const data = [
{
title: 'bloodline',
date: '2020-07-04'
}, {
title: 'celtics',
date: '2020-07-04'
}, {
title: 'air dior',
date: '2020-07-08'
}
];
然后你可以使用LoDash 的 groupBy方法并做这样的事情:
const data = [
{
title: 'bloodline',
date: '2020-07-04'
}, {
title: 'celtics',
date: '2020-07-04'
}, {
title: 'air dior',
date: '2020-07-08'
}
];
const grouped = _.groupBy(data, 'date');
for (let date in grouped) {
// display date here
console.log(date);
for (let item of grouped[date]) {
// display each item title here
console.log(item.title);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
注意:由于您没有提供任何源代码,很可能您需要根据您的用例调整此代码段,但这可能是解决它的起点。
添加回答
举报
