js原生数组去重

来源:互联网 发布:数组转化为json字符串 编辑:程序博客网 时间:2024/06/06 11:44

方式一

使用indexOf检测元素是否已经存在

function uniq(array){    if(array==null)        return;    var ret=[];    for(var i=0;i<array.length;i++){        if(ret.indexOf(array[i])===-1)            ret.push(array[i]);    }    return ret;}

方式二

使用对象存储已经选取的元素,并用于判断剩余元素是否已经选取。

function uniq(array){    var ret=[],temp={};    for(var i=0;i<array.length;i++){        if(!temp[array[i]]){            temp[array[i]]=true;            ret.push(array[i]);        }    }    return ret;}

方式三

使用indexOf与元素的在元素中的下标比较

function uniq(array){    var ret=[];    array.forEach(function(item,i,array){        if(array.indexOf(item)===i)            ret.push(item);    });    return ret;}

方式四

将数据排序,并且和结果数组的最后的元素作比较去重

function uniq(array){    var ret=[];    var lastVal=array[0];    ret.push(array[0]);    array.sort();    for(var i=0;i<array.length;i++){        if(lastVal!=array[i]){            lastVal=array[i];            ret.push(lastVal);        }    }    return ret;}