一、利用indexOf
普通函数方式:

function unique(arr){
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        if(newArr.indexOf(arr[i])===-1){
            newArr.push(arr[i]);
        }
    }
    return newArr
}
var array=[1,1,2,3,4,4,5,5,6];
unique(array);// [1, 2, 3, 4, 5, 6]

原型方法:

Array.prototype.unique=function(){
    var newArr=[this[0]];
    for(var i=0;i<this.length;i++){
        if(this.indexOf(this[i])===i){
            newArr.push(this[i]);
        }
    }
    return newArr
};
var array=[1,1,2,3,4,4,5,5,6];
array.unique();

二、利用Array.filter

var oldArr=[1,1,2,3,4,4,5,5,6];
var newArr=oldArr.filter(function(currentValue,index,arr){
    if(arr.indexOf(currentValue)===index){
        return true
    }else{
        return false
    }
});
console.log(newArr);

三、ES6中方法
1、使用Set函数与扩展运算符(利用的是Set函数数值唯一性的特点)

[...new Set([1,1,2,3,4,5])]

2、Array.from()【利用的是Set函数数值唯一性的特点及from()函数可以将其转换为数组的原理】

Array.from(new Set([1,1,2,2,3,4,5,5]));


Mrs_nn
0 声望1 粉丝