zoukankan      html  css  js  c++  java
  • JavaScript数组去重的几种方法

    这里找到3种数组去重的方法,分享出来,方便他人,注释是我自己的理解

     1 function arr1() {
     2    var n = [];
     3     for(var i=0; i<this.length; i++) {
     4         if (n.indexOf(this[i]) == -1) n.push(this[i]);
     5     }
     6     return n;
     7 }
     8 //如果当前数组的第i个已经保存进了临时数组n,那么跳过,否则把当前项push到临时数组里面
     9 //若返回-1,表明没有在临时数组中找到,若不能于-1,则表明在临时数组中已有值
    10 //indexOf用于查找指定字符串值在字符串中首次出现的位置,没有找到的话返回 -1
    11 
    12 function arr2() {
    13     var n = {},r=[];
    14     for(var i=0; i<this.length; i++) {
    15         if (!n[this[i]]) {
    16             n[this[i]] = true;
    17             r.push(this[i]);
    18         }
    19     }
    20     return r;
    21 }
    22 //n为hash表,r为临时数组
    23 //如果hash表中没有当前项,就存入hash表
    24 //并把当前数组的当前项push到临时数组里面
    25 
    26 function arr3() {
    27     var n = [this[0]];
    28     for(var i = 1; i < this.length; i++) {
    29         if (this.indexOf(this[i]) == i) {
    30             n.push(this[i]);
    31          }
    32     }
    33      return n;
    34 }
    35 //n为结果数组,从第二项开始遍历
    36 //如果当前数组的第i项在当前数组中第一次出现的位置不是i
    37 //那么表示第i项是重复的,忽略掉。否则存入结果数组
    38 //要是有重复的,那么重复出现的那个x第一次出现的位置就不是重复出现的位置了
    39 //比如x第一次出现在3位,重复x出现在5位,indexOf查询到首次出现的位置是3位,那么5位的x就是重复的
  • 相关阅读:
    每日一剂 14-6-6
    每日一剂 14-6-5
    每日一剂 14-6-4
    每日一剂 14-5-30
    Maven清理 .lastUpdated文件
    Docker 将项目做成镜像部署在docker中
    Docker 镜像拷贝到 正式环境运行
    Docker 安装 Tomcat
    Docker 安装 ActiveMq
    Docker 安装 nginx
  • 原文地址:https://www.cnblogs.com/kino156/p/6250071.html
Copyright © 2011-2022 走看看