zoukankan      html  css  js  c++  java
  • JavaScript 数组去重

      数组去重在面试中有时候会碰到,业务中也有的时候会用到。一般去重都是后端做的。其中的有的方法可能有问题,有更好的方式欢迎留言一起学习。

    一、利用 ES6 Set 去重

      function deweight(arr){
        return Array.from(new Set(arr))
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    二、for循环嵌套,然后splice去重

      function deweight(arr){
        for(var i = 0; i < arr.length; i++){
          for(var j = i + 1; j < arr.length; j++){
            if(arr[i] == arr[j]){
              arr.splice(j,1);
              j--;
            }
          }
        }
        return arr
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    三、利用 indexOf 去重

      function deweight(arr){
        if(!Array.isArray(arr)){
          console.log("type error");
          return
        }
        let array = [];
        for(var i = 0; i < arr.length; i++){
          if(array.indexOf(arr[i]) === -1){
            array.push(arr[i])
          }
        }
        return array
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    四、利用 includes 去重

      function deweight(arr){
        if(!Array.isArray(arr)){
          console.log("type error");
          return
        }
        let array = []
        for(var i = 1; i < arr.length; i++){
          if(!array.includes(arr[i])){
            array.push(arr[i])
          }
        }
        return array
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    五、利用 reduce + includes 去重

      function deweight(arr){
        if(!Array.isArray(arr)){
          console.log("type error");
          return
        }
        return arr.reduce((prev,cur) => prev.includes(cur)?prev:[...prev,cur],[])
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    六、利用 Map 数据结构 去重

      function deweight(arr){
        let map = new Map();
        let array = new Array();
        for(let i = 0; i < arr.length; i++){
          if(map.has(arr[i])){
            map.set(arr[i],true)
          }else{
            map.set(arr[i],false);
            array.push(arr[i])
          }
        }
        return array
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    七、利用 filter 去重

      function deweight(arr){
        return arr.filter(function(item,index,arr){
          return arr.indexOf(item,0) === index;
        })
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    

    八、利用 hasOwnProperty 去重

      function deweight(arr){
        let obj = {};
        return arr.filter(function(item,index,arr){
          return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
        })
      }
      let arr=['true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN','a','a',{},{}];
      console.log(deweight(arr));
    
  • 相关阅读:
    Rails中使用图表(ChartJs)显示数据
    Ubuntu下sublime无法输入中文问题完美解决
    ruby--$:.unshift File.expand_path('..', __FILE__)(转载)
    消息闪现
    Rails中编写自己的任务
    Rails定时任务
    rails中设置配置信息 读取配置信息
    在lib下编写的自己的类需要用到model内相关方法
    rails_ajax 验证验证码
    rails添加验证码
  • 原文地址:https://www.cnblogs.com/aloneer/p/14594841.html
Copyright © 2011-2022 走看看