[1,2,1,3].unique()实现数组去重最优方法

  • 内容
  • 相关

首先得知道数组没有可以直接去重的方法,即直接[].unique()是不支持的,会报“Uncaught TypeError: [].unique is not a function”错误,这就要求我们要将unique()方法添加到数组Array.prototype原型链中。

至于Array.prototype.unique方法内部怎么实现去重,方法多种多样,下面列出3种实现思路:

<script>
// 方法1:使用ES5中的indexOf进行去重(ie8以下版本不支持Array.prototype.indexOf)
        Array.prototype.unique = function() {
            var tempArr = [];
            for (var i = 0; i < this.length; i++) {
                if (tempArr.indexOf(this[i]) == -1) {
                    tempArr.push(this[i]);
                }
            }
            return tempArr;
        }
        //方法2:创建一个临时数组存放结果,创建一个空对象,for循环时每次取出一个元素,然后以对象属性形式去访问这个元素,如果访问不到,则将该元素存入临时数组,并存入对象属性中供后面数组元素对比,以达到去重效果
        Array.prototype.unique2 = function(){
         var temArr = [];
         var json = {};
         for(var i = 0; i < this.length; i++){
          if(!json[this[i]]){
           temArr.push(this[i]);
           json[this[i]] = 1;
          }
         }
         return temArr;
        }
        // 方法3:先排序后然后再相邻比较去重(会对原数组进行排序!)
        Array.prototype.unique3 = function() {
            this.sort();
            var tempArr = [this[0]];
            for (var i = 1; i < this.length; i++) {
                if (this[i] != tempArr[tempArr.length - 1]) {
                    tempArr.push(this[i]);
                }
            }
            return tempArr;
        }
    //调用方法
    console.log([1,2,1,3].unique());
    console.log([1,2,1,3].unique2());
    console.log([1,2,1,3].unique3());
</script>

[1,2,1,3].unique()实现数组去重最优方法
         本页正文内容约1007个文字
         本文标签:

         版权声明:若无特殊注明,本文皆为“懒人的小窝”原创,转载请保留文章出处。

         本文链接:https://suppore.cn/582.html   百度已收录

发表评论

电子邮件地址不会被公开, 推荐使用QQ快速评论!

00:00 / 00:00
顺序播放