数组去重的方式有哪些?

双重for()循环

复制代码
    var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1]
    // 数组去重:
    // 方法1: 双重for 循环
    function newArrFn(arr) {
      // 创建一个新的空数组
      let newArr = []
      for (let i = 0; i < arr.length; i++) {
        // 设置一个开关,如果是true,就存进去,不是就不存
        let flag = true
        for (let j = 0; j < newArr.length; j++) {
          // 原数组和新数组作比较,如果一致,开关变为 false
          arr[i] === newArr[j] ? flag = false : flag
        };
        flag ? newArr.push(arr[i]) : newArr
      };
      return newArr
    }
    console.log(newArrFn(arr));// [1, 2, 3, 4, 5, 6, 8]
复制代码

for()循环+indexof()

indexof()特性就是查找数组中是否有相同元素,如果有就返回其索引(及下标),如果没有就返回-1

复制代码
    var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1]
    // 数组去重:
    // 方法2: for + indexof
    function newArrFn(arr) {
      let newArr = []
      for (let i = 0; i < arr.length; i++) {
        newArr.indexOf(arr[i]) === -1 ? newArr.push(arr[i]) : newArr
      };
      return newArr
    }
    console.log(newArrFn(arr));//[1, 2, 3, 4, 5, 6, 8]
复制代码

for()+sort()

先将原数组sort()排序,然后for()循环比较相邻数组,如果不同就push

复制代码
var arr = [1, 2, 3,4 ,5,6, 4, 3, 8, 1]
    // 数组去重:
    // 方法3: for + sort
    function newArrFn (arr) {
      arr = arr.sort()
      let newArr = []
      for(let i = 0;i<arr.length;i++){
        arr[i] === arr[i-1] ? newArr : newArr.push(arr[i])
      };
      return newArr
    }
    console.log(newArrFn(arr));  //[1, 2, 3, 4, 5, 6, 8]
复制代码

Set()

ES6新增的数据类型Set的特点就是数据不重复,Set()函数可接收一个数组(或类数组对象)进行初始化,以此也可实现数组去重

    var arr = [1, 2, 3, 4, 5, 6, 4, 3, 8, 1]
    // 数组去重:
    // 方法4: set
    function newArrFn(arr) {
      // .new Set方法,返回是一个类数组,需要结合 ...运算符,转成真实数组
      return ([...new Set(arr)])
    }
    console.log(newArrFn(arr)); //[1, 2, 3, 4, 5, 6, 8]

 

posted @   天青色等烟雨灬  阅读(33)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示