• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IT-nose
博客园    首页    新随笔    联系   管理    订阅  订阅

JavaScript数组去重方法总结

一、双重遍历去重

function onlyFigure(arr) {
      let newarr = [];
      const length = arr.length
      for (let i = 0; i < length; i++) {
        for(let j = i + 1; j < length; j++) {
          if(arr[i] === arr[j]) {
              i++;
              j=i;
          }
        }
        newarr.push(arr[i])
      }
      console.log(newarr);
    }
    onlyFigure([0,0,1,2,4,2,1,6,5]);

  
二、原数组下标indexOf去重

function onlyFigure(arr) {
      let newarr = [];
      for (let i = 0; i < arr.length; i++) {
        if(arr.indexOf(arr[i]) == i) {
          //console.log(arr.indexOf(arr[i]));
          newarr.push(arr[i]);
        }
      }
      console.log(newarr);
    }
    onlyFigure([0,0,1,2,4,2,1,6,5]);

  

三、新数组indexOf去重

function only(arr) {
      let newarr = [];
      let len = arr.length;
      for(let i = 0 ; i < len ; i ++ ) {
        if(newarr.indexOf(arr[i]) === -1) {
          newarr.push(arr[i])
        }
      }
      return newarr
    }

  

四、es6 Set去重

function onlyNum(arr) {
      return Array.from(new Set(arr))
    }

  
五、for...of + Object
利用对象的属性不会重复这一特性,校验数组元素是否重复

function distinct(arr) {
    let result = []
    let obj = {}

    for (let i of arr) {
        if (!obj[i]) {
            result.push(i)
            obj[i] = 1
        }
    }

    return result
}

  
参考(引用)链接:https://www.cnblogs.com/wisewrong/archive/2018/09/20/9642264.html

posted @ 2018-08-20 16:56  detanx_墨鼬漓  阅读(184)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3