zoukankan      html  css  js  c++  java
  • js 巧妙去除数组中的重复项

    1、代码如下:

    var toObject = function(a) { 
      var o = {}; 
      for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整了下, YUI源码中是i<a.length 
        o[a[i]] = true; 
      } 
      return o; 
    } 
    var keys = function(o) { 
      var a=[], i; 
      for (i in o) { 
        if (o.hasOwnProperty(i)) { // 这里, YUI源码中是lang.hasOwnProperty(o, i) 
          a.push(i); 
        } 
      } 
    return a; 
    } 
    var uniq = function(a) { 
      return keys(toObject(a)); 
    }

    实现方法原理:

    (1). 先以目标数组的值为key生成一个对象. 这一步是最核心的: 因为在一个对象中, key是无法重复的, 这样就很巧妙的排除了重复值; 

    (2). 遍历生成的对象, 将这些key取出来放到一个数组中, OK, 到此就大功告成了!(简单吧, 只需两步就行) 

    ps:

    该方法只适用于数组项为字符串, 数字的一维数组。对于二维数组的排重,就更复杂,暂时管不了那么多了!

    2、一般的实现方式

    Array.prototype.unique = function() {
        var a = this.concat();
        for(var i=0; i<a.length; ++i) {
            for(var j=i+1; j<a.length; ++j) {
                if(a[i] === a[j])
                    a.splice(j, 1);
            }
        }
    
        return a;
    };
  • 相关阅读:
    抽象工厂
    MVC模型验证+客户端验证
    模型绑定
    Linq 构建块
    Linq的简单应用_01
    简单的Jquery轮播
    实现自己的代码生成器
    JS练习--闭包
    node部署网页
    IE8-浏览器下iframe的动态onload事件处理
  • 原文地址:https://www.cnblogs.com/chendc/p/5523619.html
Copyright © 2011-2022 走看看