数组去重的三种方式

数组去重的三种方法

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

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>欢迎来踩

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面试中常用的几个基本算法整理记录(二) 无意中看到了面试中的 10 大排序算法总结原文地址记录一下,方便查找。 查...
    190CM阅读 1,787评论 1 12
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,067评论 25 708
  • 点击上方【关注】按钮,就可每期自动接受我们的漫话推送↑↑↑↑ 转载合作或聊天请发简信~~~
    慢漫来阅读 2,182评论 12 61
  • 脑子很乱,不知道自己在敲什么。 敲到哪算哪吧。 一个是昨天来电话有一个面试,我想改时间,那边说问问领导今天给我回电...
    Brian的遐想空间阅读 207评论 0 0
  • 债券账号 XSJ 止盈 -> ZGCB 补入 打新 5W & 债券 20W 自己账号 SXFJ 止损 其他暂时不动...
    增小懒zz阅读 202评论 0 0