码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重

时间:2018-07-21 16:59:47      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:.so   array   没有   UNC   fun   对象   ==   class   排序   

第一种:时间复杂度为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}

 

数组去重

标签:.so   array   没有   UNC   fun   对象   ==   class   排序   

原文地址:https://www.cnblogs.com/weiwei0111/p/9346691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!