JavaScript系列--數(shù)組去重

網(wǎng)摘:http://www.jb51.net/article/118657.htm

(一)兩層for循環(huán)

  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);

(二)利用對象內(nèi)屬性不能相同的特點(diǎn)進(jìn)行去重

  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進(jìn)行去重

  Array.prototype.uniq3 = function(){
        let arr = this;
        let result = [];
        let len = arr.length;
        arr.forEach(function(v,i,arr){//map()、filter()也可以實(shí)現(xiàn)
            if(arr.indexOf(v,i+1) === -1){//若果只穿一個索引參數(shù)v,
  然后arr.indexOf(v,v+1)會報(bào)錯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數(shù)據(jù)結(jié)構(gòu),它類似于數(shù)組,其成員都是唯一的,利用Array.from將set結(jié)構(gòu)轉(zhuǎn)換成數(shù)組

    function uniq4(array){    
        //第一種方法
        // return Array.from(new Set(array));//控制臺沒有輸出
        // console.log(Array.from(new Set(array)));
        //第二種方法:拓展運(yùn)算符(...)內(nèi)部使用for...of循環(huán)        
        let resultArr = [...new Set(array)];
        console.log(resultArr);
    }
    uniq4([1,2,3,3]);

感謝閱讀我的文章,如有疑問或?qū)戝e的地方,請不吝留言賜教

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容