几种数组去重的方式

type
status
date
slug
summary
tags
category
icon
password

1) 双重for循环数组去重

  • 双重for循环可以说是一个比较笨重的方法来数组去重,时间复杂度是O(n²),如果数组很长,他的性能将会很差
  • 原理:先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对,如果不重复则添加到新数组中,最后返回新数组

2) indexOf方法去重

  • 利用indexOf检测元素在数组中第一次出现的位置是否和元素现在的位置相等,如果不等则说明该元素是重复元素
  • 还有一种方法是利用indexOf和lastIndexOf,判断这两个是否相等,如果不相等,则该元素是重复元素,这里演示一下第一种方式

3) 相邻元素去重

  • 这种方法首先调用了数组的排序方法sort(),然后根据排序后的结果进行遍历及相邻元素比对,如果相等则跳过改元素,直到遍历结束

4) set与解构赋值去重

ES6中新增了数据类型set,set的一个最大的特点就是数据不重复。Set函数可以接受一个数组(或类数组对象)作为参数来初始化,利用该特性也能做到给数组去重

5) Lodash一把梭😏

简单说下 lodash 的 uniq方法的源码实现。
这个方法的行为和使用 Set 进行去重的结果一致。当数组长度大于等于 200 时,会创建 Set并将 Set 转换为数组来进行去重(Set 不存在情况的实现不做分析)。当数组长度小于 200 时,会使用类似前面提到的 双重循环 的去重方案,另外还会做 NaN 的去重
除了Symbol和SVG,还能这样实现多彩字体图标《Ultralearning(超学习)》TL;DR
拙见
工具应用
前端技术
AI技术
其他知识
编程知识