实用网络站
白蓝主题五 · 清爽阅读
首页  > 电脑进阶

数组去重排序的实用技巧,程序员日常必备

处理数据时,经常遇到数组里有重复项,还要求按一定顺序排列。比如统计用户提交的标签,或者整理一批商品价格,重复的得去掉,还得从小到大排好。这时候,数组去重排序就成了家常便饭。

JavaScript 中的常见做法

前端开发中,用 JavaScript 处理数组最常见。利用 Set 数据结构可以快速去重,再结合 sort 方法排序:

const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5];
const uniqueSorted = [...new Set(arr)].sort((a, b) => a - b);
console.log(uniqueSorted); // [1, 2, 3, 4, 5, 6, 9]

这里先用 new Set 去重,再用扩展运算符转回数组,最后调用 sort 按数值升序排列。注意如果不用 (a, b) => a - b,数字会按字符串比较,导致 10 排在 2 前面。

Python 一行搞定

在 Python 里更简洁,直接用 sortedset

arr = [3, 1, 4, 1, 5, 9, 2, 6, 5]
result = sorted(set(arr))
print(result)  # [1, 2, 3, 4, 5, 6, 9]

既去重又升序,代码干净利落。要是想降序,加个 reverse=True 就行。

实际场景:订单金额去重排序

假设你导出了一堆订单数据,金额列有重复,领导要看所有不重复的金额从低到高分布情况。原始数据可能是这样的:

[89.5, 102, 89.5, 150, 102, 75, 200, 75]

用上面的方法处理后,得到清晰的结果:

[75, 89.5, 102, 150, 200]

一眼就能看出价格区间和关键档位,做报表也方便多了。

注意点:别忽略数据类型

有时候数组里混着数字和字符串形式的数字,比如 [1, '1', 2, '2'],直接去重不会合并这些值。需要先统一转类型:

const arr = [1, '1', 2, '2', 3];
const normalized = arr.map(item => Number(item));
const result = [...new Set(normalized)].sort((a, b) => a - b);
// 得到 [1, 2, 3]

不然看着像去重了,其实漏了隐式类型差异的问题。