JavaScript 数组去重方法汇总
在前端开发中,我们经常需要对数组进行去重操作。本文将介绍 JavaScript 中几种常见的数组去重方法,以及它们的优缺点和使用场景。
1. Set 去重法
ES6 引入了 Set 类型,可以用来存储不重复的值。利用 Set 的特性,我们可以很方便地实现数组去重。
----- --- - --- -- -- -- -- -- --- ----- --------- - ------- ---------- ----------------------- -- --- -- -- -- --
优点:简单易用,性能较好。
缺点:无法去重对象类型的元素。
使用场景:适用于基本数据类型的数组去重。
2. 双重循环法
双重循环法是一种比较容易想到的去重方法,即遍历数组,每次拿当前元素和后面的元素进行比较,如果有相同的就删除后面的那个元素。
-------- ----------- - --- ---- - - -- - - ----------- ---- - --- ---- - - - - -- - - ----------- ---- - -- ------- --- ------- - ------------- --- ---- - - - ------ ---- - ----- --- - --- -- -- -- -- -- --- ------------------------- -- --- -- -- -- --
优点:实现简单,可以去重任何类型的元素。
缺点:性能较差,在数组比较大时会有性能问题。
使用场景:适用于小型数组的去重操作。
3. indexOf 去重法
这种方法利用了 indexOf 函数返回第一个匹配项的特性。遍历数组,如果当前元素在该元素之前出现过,则删除当前元素。
-------- ----------- - ----- --- - --- --- ---- - - -- - - ----------- ---- - -- -------------------- --- --- - ----------------- - - ------ ---- - ----- --- - --- -- -- -- -- -- --- ------------------------- -- --- -- -- -- --
优点:实现简单,可以去重任何类型的元素。
缺点:性能较差,在数组比较大时会有性能问题。
使用场景:适用于小型数组的去重操作。
4. Map 去重法
和 Set 类型类似,Map 类型也可以用来存储不重复的键值对。利用 Map 的特性,我们可以很方便地实现数组去重。
-------- ----------- - ----- --- - --- ------ ----- --- - --- --- ---- - - -- - - ----------- ---- - -- ------------------ - --------------- ------ ----------------- - - ------ ---- - ----- --- - --- -- -- -- -- -- --- ------------------------- -- --- -- -- -- --
优点:可以去重任何类型的元素。
缺点:性能较差,在数组比较大时会有性能问题。
使用场景:适用于基本数据类型和对象类型的数组去重。
5. 对象属性法
利用对象属性的唯一性,遍历数组,将每个元素作为对象属性名和属性值存储到一个新对象中,如果已存在该属性,则说明该元素在之前已经出现过。
-------- ----------- - ----- --- - ---------------------------------------------------------- -------- -------------------------------------------------------------------------------------