數組去重

★最原始的數組去重的方法:利用for循環,if判斷語句,數組中的兩個方法indexOf()和push();
var arr=[1,2,3,4,5,4,3,2,1];
var newArr=[];
for(var i=0;i<arr.length;i++){
    //判斷arr[i]第一次出現的位置跟-1是否相等,若是不等說明重複了,若是等於-1,說明不存在,須要添加到newArr中
    //例如:i=1,此時arr[i]=2,而arr.indexOf(2)沒有存在過,因此他的下標是-1,執行if語句中,反之不進入if語句
    if(newArr.indexOf(arr[i])==-1){
        newArr.push(arr[i])
    }
}
console.log(newArr);

  

★利用for循環,if判斷語句,數組中的兩個方法indexOf()和push();
var arr=[1,2,3,4,5,4,3,2,1];
var newArr=[];
for(var i=0;i<arr.length;i++){
    //判斷arr[i]第一次出現的位置跟當前i是否相等,若是不等說明重複了,不進入if語句中
    //例如:i=6,此時arr[i]=4,而arr.indexOf(4)第一次出現的下標是3,因此3≠6,不進入if語句裏邊,直接執行i++
    if(arr.indexOf(arr[i])==i){
        newArr.push(arr[i])
    }
}
console.log(newArr);

  

★實現原理:先將原數組arr進行排序,相同的元素緊挨着存放,並將arr中的第一項存入新數組中,for循環遍歷arr,
判斷arr中的每一項是否在newArr中存在,若是不存在執行if語句,由於一開始將arr中第一項存入了newArr中,
因此遍歷arr時直接從下標爲1的項開始遍歷
var arr=[1,2,3,4,5,4,3,2,1];
arr.sort();//將數組排序
var newArr=[arr[0]];
for(var i=1;i<arr.length;i++){
    if(arr[i]!==newArr[newArr.length-1]){
        newArr.push(arr[i])
    }
}
console.log(newArr);

  

★實現原理:外層for循環下標從0開始遍歷數組,內層循環下標從外層循環+1開始遍歷數組,
判斷數組中前一項和後一項是否相等,若是相等用splice()方法刪除重複的那一項,而且將內存循環下標減1
var arr=[1,2,3,4,5,4,3,2,1];
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--;
        }
    }
}
console.log(arr);

  

★用了數組的三個方法reduce()、indexOf()和push();
var arr=[1,2,3,4,5,4,3,2,1];
var newArr=arr.reduce(function(prev,cur){
    prev.indexOf(cur)===-1&&prev.push(cur);
    return prev;
},[]);
console.log(newArr);

  

★給原型添加方法,而後繼承1
Array.prototype.uniquel=function(){
    var res=[this[0]];
    for(var i=1;i<this.length;i++){
        var flag=false;//假設一開始沒有重複的
        for(var j=0;j<res.length;j++){
            if(this[i]==res[j]){
                flag=true;//進入if語句,說明有重複項
                break;
            }
        }
        if(!flag){
            res.push(this[i])
        }
    }
    return res;
 }
 var arr=[1,2,3,4,5,4,3,2,1];
console.log(arr.uniquel());

  

★給原型添加方法,而後繼承2
Array.prototype.unique2=function(){
    var res=[];
    var json={};
    for(var i=0;i<this.length;i++){
        if(!json[this[i]]){
          res.push(this[i]);
          json[this[i]]=1;  
        }
    }
    return res;
}
var arr=[1,2,3,4,5,4,3,2,1];
console.log(arr.unique2());
相關文章
相關標籤/搜索