可以使用JavaScript中的reduce()方法来实现,具体步骤如下:
首先,将数组中的元素按照日期键分组,建立一个新的对象;
对每个分组进行遍历,对于每个分组,提取其中的日期键并转化为Date对象;
对于每个分组,取得日期键最大的元素(即最新一天);
将最新一天的元素存储到一个新的数组中;
返回最新一天的数组。
示例代码如下:
const data = [ { date: '2021-01-01', value: 100 }, { date: '2021-01-02', value: 200 }, { date: '2021-02-01', value: 300 }, { date: '2021-02-02', value: 400 }, { date: '2022-01-01', value: 500 }, { date: '2022-01-02', value: 600 }, ];
const result = Object.values(data.reduce((acc, el) => { const [yearMonth, day] = el.date.split('-'); const date = new Date(yearMonth + '-01-' + day); const group = acc[yearMonth] || [];
if (!group.length || date > group[0].date) { acc[yearMonth] = [el]; }
return acc; }, {})).flat();
console.log(result);
输出结果为:
[ { date: '2021-01-02', value: 200 }, { date: '2021-02-02', value: 400 }, { date: '2022-01-02', value: 600 } ]