数组去重的三种方式

2016-12-06  本文已影响27人  你在我记忆里

数组去重的三种方法

前两天面试的时候,面试官出的考题。现在我来总结一下,算是慢慢积累吧

1.两个循环,挨个对比

function uniqueArr(arr) {
        var ret = [],
            length = arr.length;
        for(var i = 0;i < length; i++){
            for(j = i+1; j<length;j++){
                if(arr[i] === arr[j]){
                    j = ++i;
                }
            }
            ret.push(arr[i]);
        }
        return ret;
    }

这种方式应该是可以最容易考虑到的,但是数组过长的话,效率应该会变差。

2.先排序然后用一次循环

function uniqueArr(arr) {
        var sortedArr = arr.sort();
        var results = [];
        for (var i = 0; i < arr.length; i++) {
            if (sortedArr[i + 1] != sortedArr[i]) {
                results.push(sortedArr[i]);
            }
        }
        return results;
    }

排序后用数组后一位比较前一位,一次循环就好了,但是破坏了原有数组的顺序。

3.利用对象字面量的key与value关联性,写起来比较简单

function uniqueArr(arr) {
        var ret = [],
            json = {},
            length = arr.length;

        for(var i = 0; i < length; i++){
            var val = arr[i];
            if(!json[val]){
                json[val] = 1;
                ret.push(val);
            }
        }

        return ret;
    }

也许这种方法想的时候难想到,但是用起来真的很简单~

原文地址:<a href="http://blog.jimliu.xyz/2016/11/21/Template-literals/">Jimliu写字的地方</a>欢迎来踩

上一篇 下一篇

猜你喜欢

热点阅读