zoukankan      html  css  js  c++  java
  • Array去重探究

    如何高效简洁地去重?从下面两个角度考虑:

    1.借助js对象key唯一的特性去重

    2.借助Array自身方法遍历、操作Array

    第一种方法最简洁,局限是使用了Array自身方法就必须承受filter不改变原数组的特点。

     1              function uniq1(arr){
     2                 var obj = {};
     3                 return arr.filter(function(item,index,arr){
     4                     if(obj.hasOwnProperty(item)){  //重复了
     5                         return false;
     6                     } else {
     7                         obj[item] = true;
     8                         return true;
     9                     }
    10                 });
    11             }

    所以有了第二种方法,我们自己来对数组筛选,满足一切去重的自定义要求。这里使用splice是对原数组进行元素删除,使得可以改变原数组。删除元素引起数组下标发生变化,所以第六行把i--。这种情况不能使用forEach遍历,因为该方法中的index貌似是只读的。

     1         function uniq2(arr){
     2                 var obj = {};
     3                 for(i=0;i<arr.length;i++){
     4                     if(obj.hasOwnProperty(arr[i])){  //重复了
     5                         arr.splice(i,1);
     6                         i--;  //不加这行代码会每次漏掉一个元素
     7                     } else {
     8                         obj[arr[i]] = true;
     9                     }    
    10                 }
    11                 return arr;
    12             }
  • 相关阅读:
    前端之CSS
    前端之HTML
    数据库作业案例
    django进阶版4
    django进阶版3
    django进阶版2
    django初步了解4
    django进阶版1
    django初步了解3
    django初步了解2
  • 原文地址:https://www.cnblogs.com/feitan/p/5118558.html
Copyright © 2011-2022 走看看