js实现数组去重排序
数组去重排序的实现方法
使用 Set 和 sort 方法
Set 数据结构天然具有去重特性,结合数组的 sort 方法可实现去重排序。
const arr = [3, 1, 2, 2, 4, 3];
const uniqueSorted = [...new Set(arr)].sort((a, b) => a - b);
console.log(uniqueSorted); // [1, 2, 3, 4]
使用 filter 和 indexOf 方法
通过 indexOf 判断元素首次出现的位置,配合 filter 实现去重,再用 sort 排序。
const arr = [3, 1, 2, 2, 4, 3];
const uniqueSorted = arr
.filter((item, index) => arr.indexOf(item) === index)
.sort((a, b) => a - b);
console.log(uniqueSorted); // [1, 2, 3, 4]
使用 reduce 方法
通过 reduce 累积不重复元素,最后对结果进行排序。
const arr = [3, 1, 2, 2, 4, 3];
const uniqueSorted = arr
.reduce((acc, cur) => (acc.includes(cur) ? acc : [...acc, cur]), [])
.sort((a, b) => a - b);
console.log(uniqueSorted); // [1, 2, 3, 4]
自定义排序规则
若需按特定规则排序(如降序或字符串排序),可调整 sort 回调函数。
// 降序排列
const arr = [3, 1, 2, 2, 4, 3];
const uniqueSorted = [...new Set(arr)].sort((a, b) => b - a);
console.log(uniqueSorted); // [4, 3, 2, 1]
处理复杂数据类型
对于对象数组的去重排序,需自定义比较逻辑。

const arr = [{id: 2}, {id: 1}, {id: 2}, {id: 3}];
const uniqueSorted = arr
.filter((obj, index) => arr.findIndex(item => item.id === obj.id) === index)
.sort((a, b) => a.id - b.id);
console.log(uniqueSorted); // [{id: 1}, {id: 2}, {id: 3}]






