JavaScript的几种 去重 方法

老实说,JavaScript 中删除重复项的方法只有三种:IndexOf、Set 和 Map。
组是最容易的,但对象是困难的。

对于扩展,Set是第一个选择。
去年我们跑了一个电商项目,用Set去除了重复的用户ID。
这是通过几行代码完成的。
性能至少比IndexOf快三倍,并且支持对象重复数据删除。
您只需输入[{id:1 },{id:2 }],它会自动为您过滤掉重复的ID。

还有一点是map更加灵活,尤其是在处理嵌套对象时。
使用映射来存储键值对。
例如,去年需要复制带有版本号的组件。
使用map来注册{componentId: version}。
如果出现这种组合,它将被忽略。
它比 Set 直接比较对象引用更准确。

等一下,还有一件事。
说实话,IndexOf方法非常难。
去年,我的一个同学使用 IndexOf 来删除重复的字符串。
因此,大写和小写字母被视为不同的元素。
我找了好久的错误,后来发现直接用Set就可以解决。

提醒:使用Map去重时,不要忘记直接使用new Map().entries().map(item => item[0])。
否则,你就得再绕一圈去构建一个新的数组,性能损失就很明显了。

我认为Set值得尝试。
尤其是当数据类型很复杂时,你无法抗拒一行代码。

js数组去重方法是什么

数组遍历方法简单但速度慢,适合小规模数据。
数组下标速度更快,但仅适用于未排序的数组。
排序方法速度快但改变了顺序,所以适合排序后使用。
优化的遍历速度慢但节省内存。
set方法速度快,代码简洁,深受现代用户推荐。
对象键值方式速度快,但处理类型有限制。
为了小规模或兼容性而选择传统,为了简单和性能而选择集合,并避免排序来维持顺序。
你自己掂量一下吧。