美文网首页
前端面试题之数组去重

前端面试题之数组去重

作者: 汶沐 | 来源:发表于2019-10-29 22:10 被阅读0次

    // 可以在函数刚开始时,添加个鉴别参数是否为数组

    if (!Array.isArray(arr)) {
    console.log('type error!')
    return
    }
    

    1、Es6 Set

    function unique (arr) {
      return Array.from(new Set(arr))
      // Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组
    }
    

    代码最少,但缺点是无法去掉{}空对象。

    2、for嵌套for,再splice

    function unique(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;
    }
    

    3、indexOf

    function unique(arr) {
      var array = [];
      for(var i=0;i<arr.length;i++) {
        if(array.indexOf(arr[i]) === -1){
          array.push(arr[i])
        }
      }
      return array;
    }
    

    4、sort()

    function unique(arr) {
      arr = arr.sort()  //对数组进行排序
      var array = [arr[0]];
      for (var i=1;i<arr.length;i++) {
        if (arr[i] !== arr[i-1]) { //与相邻元素对比
          array.push(arr[i]);
        }
      }
      return array;
    }
    

    5、includes

    function unique(arr) {
      var array = [];
      for(var i=0;i<arr.length;i++) {
        if(!array.includes(arr[i])) {  //includes 检验数组是否含有某个值
          array.push(arr[i]);
        }
      }
      return array
    }
    

    6.[…new Set(arr)]

      […new Set(arr)] // []和...都不能省去,相当于简化了第一种方法
    
    谢谢

    相关文章

      网友评论

          本文标题:前端面试题之数组去重

          本文链接:https://www.haomeiwen.com/subject/uctnvctx.html