js去重

利用indexOf判断数组

function unique1(arr){
    var temArr = []; 
    for(var i = 0;i < arr.length;i++){ 
        if(temArr.indexOf(arr[i]) == -1){ //未在temArr中找到arr[i]
            temArr.push(arr[i]); 
        } 
    } 
    return temArr; 
}
function unique2(arr){
    var temArr = [];
    for(var i = 0;i < temArr.length;i++){
        if(arr.indexOf(arr[i])== i){  //查找arr中第i个元素的位置是i的元素
            temArr.push(arr[i]);
        }
    }
    return temArr;
}
var a1 = ['1','2','1','3','2'];
console.log(unique2(a1));

利用set函数

function noRepeate(arr){
    return Array.from(new Set(arr));  //Array.from将Set、Map、Array对象和类数组对象转换为数组
    }
var a = ['1','2','1'];
console.log(noRepeate(a));

先排序后比较

(比较原数组第i个元素和结果数组的最后一个元素的值)

function unique3(arr){
    var newArr = arr.sort();
    var res = [newArr[0]];
    for(var i = 1;i < newArr.length;i++){
        if(newArr[i] !== res[res.length - 1]){
            res.push(newArr[i]);
        }
    }
    return res;
}
var array = ['1','2','2','3','1'];
console.log(unique3(array));
Array.prototype.unique4 = function(){
    this.sort();
    var res = [this[0]];
    for(var i = 1;i < this.length;i++){
        if(this[i] !== res[res.length - 1]){
            res.push(this[i]);
        }
    }
    return res;
}
var arr = ['1','2','2','3','1'];
console.log(arr.unique4());

遍历数组法

(检测到重复值时终止当前循环,跳入上层循环)

function unique5(array){
    var r = [];
    for(var i = 0,l = array.length;i < l;i++){
        for(var j = i+1;j < l;j++){
            if(array[i] === array[j]){
                j = ++i;
            }
        }
        r.push(array[i]);
        console.log(i);
    }
    return r;
}
var arr = ['1','1','2','2','3','3','1'];
console.log(unique5(arr));

 

posted @ 2017-09-15 15:55  Tracy_yo  阅读(162)  评论(0编辑  收藏  举报