如何从JavaScript数组和字符串中删除重复值

我记得有一次,当我在做一个项目时,我需要从用户提供的信息中过滤掉重复的电子邮件地址。
当时,我有数百个电子邮件地址,手动删除它们的重复数据是一场噩梦。
我只是想我必须找到一种有效的方法。

首先,我尝试了最简单的一个,我编写了一个直接循环来检查每个电子邮件地址是否已在列表中。
结果写了半个小时左右,开始运行的时候才发现这个方法很慢,上百条数据要等很长时间。

然后我想,不能这样,我得寻找更好的办法。
我想到了一个“Set”对象,它似乎具有重复数据删除功能。
我尝试了一下,结果发现速度真的很快。
几秒钟之内就处理完毕了。

后来我又想了想,这个方法确实很有趣。
不仅删除了重复项,而且代码也变得简洁。
但是,它只能用于不包含对象的数组,例如数字和字符串。
我的电子邮件地址都是字符串,所以完全没有问题。

但是,如果将来出现复杂的数据类型,比如对象,你可能就得寻找另一种方式了。
例如,您可以使用自定义比较函数,或者将对象转换为字符串,然后使用 Set 删除重复项。
这个问题需要具体分析。

但是,现在我的电子邮件地址中的重复数据删除问题已经解决,我感觉完全完成了。
等等,还有别的事。
我突然想到,如果有一天项目变大,数据量变大,必须考虑到性能问题,我可能就得寻找其他的办法了。

ES6中如何用Set实现数组去重

设置重复数据删除既简单又有效。

扩展运算符转换数组。
Array.from() 转换数组。

将时间复杂度设置为 O(n)。
传统方法是 O(n^2 ) 慢。

类型未转换。
NaN 算作 1
对象引用不同。
JSON.stringify 可能不起作用。

地图按属性删除重复的地图。
Lodash _.uniqBy 非常灵活。

易于使用的套件。
使用复杂的 Map 或 Lodash。

js中set数组去重怎么用

说白了,JavaScript 使用 Set 删除重复数组既快速又简单。
就是这样:
javascript 常量数组 = [1 , 2 , 3 , 4 , 5 , 1 , 2 , 3 ]; const UniqueArr = [...new Set(arr)]; console.log(uniqueArr); // 结果:[1 , 2 , 3 , 4 , 5 ]
请记住,Set 会自动忽略副本并直接使用数组对其进行初始化。
使用扩展器或 Array.from() 转换回数组。
但请注意,Set 只能删除简单类型,不能删除对象或数组。
从性能上来说,该方法速度快,适合处理大量数据。