美文网首页前端面试锦笈
JavaScript系列--数组去重

JavaScript系列--数组去重

作者: 小鱼儿的小世界 | 来源:发表于2018-05-01 11:11 被阅读0次

    网摘:http://www.jb51.net/article/118657.htm

    (一)两层for循环

      Array.prototype.distinct = function (){
         let arr = this;
         let len = arr.length;
         for(let i = 0; i < len; i++){
          for(let j = i + 1; j < len; j++){
           if(arr[i] == arr[j]){
            arr.splice(j,1);
            len--;
            j--;
           }
          }
         }
         return arr;
        };
        var a = [1,2,3,2,1];
        var b = a.distinct();
        console.log(b);
    

    (二)利用对象内属性不能相同的特点进行去重

      Array.prototype.uniq2 = function(){
            let arr = [];
            let obj = {};
            for(let i = 0; i < this.length;i++){
                if(!obj[this[i]]){
                    obj[this[i]] = 1;
                    arr.push(this[i]);
                }
            }
            return arr;
        }
        var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
        console.log(arr.uniq2());
    

    (三)利用forEach和indexOf进行去重

      Array.prototype.uniq3 = function(){
            let arr = this;
            let result = [];
            let len = arr.length;
            arr.forEach(function(v,i,arr){//map()、filter()也可以实现
                if(arr.indexOf(v,i+1) === -1){//若果只穿一个索引参数v,
      然后arr.indexOf(v,v+1)会报错arr.indexOf() is not a function() #待解决#
                    result.push(v);
                }
            });
            return result;
        }
        var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
        console.log(arr.uniq3());
    

    (四)利用ES6的Set()

    set数据结构,它类似于数组,其成员都是唯一的,利用Array.from将set结构转换成数组

        function uniq4(array){    
            //第一种方法
            // return Array.from(new Set(array));//控制台没有输出
            // console.log(Array.from(new Set(array)));
            //第二种方法:拓展运算符(...)内部使用for...of循环        
            let resultArr = [...new Set(array)];
            console.log(resultArr);
        }
        uniq4([1,2,3,3]);
    

    感谢阅读我的文章,如有疑问或写错的地方,请不吝留言赐教

    相关文章

      网友评论

        本文标题:JavaScript系列--数组去重

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