数组去重

来源:互联网 发布:radiohead知乎 编辑:程序博客网 时间:2024/06/05 00:52

第一种:时间复杂度为O(n^2)

function uniq(arr){    var result = [];    var flag = true;    for(var i=0;i<arr.length;i++){        for(var j=0;j<result.length;j++){            if(arr[i]===result[j]){                flag = false;            }           }        if(flag){            result.push(arr[i]);        }    }    return result;}

第二种:indexOf()与filter结合使用,环境支持es5,时间复杂度为O(n)

function uniq(arr){    return arr.filter(function(item,index,array){        return array.indexOf(item) === index;    });}uniq([1,2,1,1,4])输出: [1, 2, 4]

第三种:先排序sort(),再filter,时间复杂度为O(n)

function sortAndUniq(arr){    return arr.sort().filter(function(item,index,array){        return item !== array[index+1];    });}sortAndUniq([1,2,1,1,4])输出: [1, 2, 4]

第四种: 借助对象,时间复杂度为O(n),但是没有区分类型,比如2和”2”

function uniq(arr){    var result = [];    var obj = {};    for(var i=0;i<arr.length;i++){        if(!obj[arr[i]]){            result.push(arr[i]);            obj[arr[i]] = 1;        }    }    return result;}uniq([1,2,3,1])// 输出[1,2,3]

第五种:set方法

new Set([1,2,1,1,5]);输出:Set(3) {1, 2, 5}
原创粉丝点击