在JavaScript中,如果你遇到一个数组中的对象(或任何类型的元素)具有重复的键(key),并且你想要替换这些重复的项目,同时对数组进行排序,并且只保留最后两个项目,你可以按照以下步骤操作:
reduce
、sort
和slice
,可以使代码更加简洁易读。reduce
方法来创建一个新的数组,其中每个键只出现一次,且值为最后一个出现的对象。sort
方法对新数组进行排序。slice
方法保留最后两个项目。// 假设有一个对象数组,其中的对象具有重复的键
const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Charlie' }, // 与第一个对象id重复
{ id: 3, name: 'David' },
{ id: 2, name: 'Eve' } // 与第二个对象id重复
];
// 替换重复的项目
const uniqueData = data.reduce((acc, current) => {
acc[current.id] = current;
return acc;
}, {});
// 将对象的键转换为数组
const sortedData = Object.values(uniqueData);
// 对数组进行排序(这里以id为排序依据)
sortedData.sort((a, b) => a.id - b.id);
// 保留最后两个项目
const finalData = sortedData.slice(-2);
console.log(finalData);
这段代码首先通过reduce
方法创建了一个新的对象,其中每个键(在这个例子中是id
)只出现一次,且值为最后一个出现的对象。然后,通过Object.values
将这个对象转换回数组。接着,使用sort
方法对数组进行排序,最后使用slice
方法保留数组中的最后两个元素。
领取专属 10元无门槛券
手把手带您无忧上云