编辑:从重复的威胁中找到答案。请忽略这一点,谢谢
我一直在努力对下面的一个对象数组进行排序。目标是迭代并显示对象中的图像,但它们需要按顺序分开日期。
例如,要显示的顺序应为:
2001年7月12日
2000年1月1日
1999年10月10日
这个问题对我来说是一个排序问题。我可以迭代并显示所有图像,但图像没有按日期排序。
arr: [
{
date: 'January 1, 2000',
url: 'string',
id: 1
},
{
date: 'July 12, 2001',
url: 'string',
id: 142
},
{
date: 'October 10, 1999',
url: 'string',
id: 333
},
{
date: 'January 12, 2000',
url: 'string',
id: 1
},
{
date: 'January 1, 2000',
url: 'string',
id: 1
},
{
date: 'July 12, 2001',
url: 'string',
id: 142
},
{
date: 'October 10, 1999',
url: 'string',
id: 333
},
{
date: 'July 12, 2001',
url: 'string',
id: 142
},
{
date: 'October 10, 1999',
url: 'string',
id: 333
},
]
我尝试过使用lodash libray函数_.keyBy并返回3个对象,其中日期为键,值为与所述键关联的对象,但是,每个键只返回一个对象而不是所有对象都与之相关联日期。
编辑: 按ID排序也有效,但我仍然需要将标题显示为不应成为问题的日期
答案 0 :(得分:-1)
首先,您必须按日期对图像进行分组:
const day = {}, result = [];
for(const {date, ...img} of arr) {
if(day[date]) {
day[date].push(img);
} else {
result.push({date, entries: (day[date] = [img]) });
}
}
然后您可以按日期对结果进行排序:
result.sort((a, b) => +new Date(a.date) - new Date(b.date));