zoukankan      html  css  js  c++  java
  • 自定义数组方法

    1、删除数组重复值

    Array.prototype.deleteRes = function(){
       var temp = {};
       var newAry = [];
       for(var i = 0,aryLen = this.length; i < aryLen; i++){
        if(typeof temp[this[i]] == "undefined"){
         temp[this[i]] = "true";
        }
       }
       for(var j in temp){
        newAry.push(j);
       }
       return newAry;
      }


    个人总结:

    在网上对于删除数组的重复值有几种思路,其它的思路较为简单,上面的思路有点难理解,在这里我把自己的思路备注一下,用以记录,如有错误,请指出,多谢!!

    首先我们需要一个空的对象直接量,为什么呢?因为对象直接量中的内容是:属性名:属性值,属性名:属性值...这样的一个形式,这样方便我们进行筛选。然后我们需要一个空的数组,为了把筛选后的值装进来,并返回给我们。

    然后,我们进行一个for循环,遍历调用这个方法的数组,在for循环中,我们来进行筛选,这里有点难理解,我们需要一个实例:

    假设我们现在有一个数组:var arr = [111,222,333,444,111,222,555];我们来调用这个方法:arr.deleteRes();想象一下,当程序执行到第一个for循环的时候,如果i=0的时候,this[i] = 111,然后temp[this[i]]就是temp[111],了解对象直接量的人,应该会知道:temp[111]就是获取到属性名为111的属性值,但是111没有任何值,在循环中进行一个判断,如果temp[111]的类型是undefined,则将"true"赋值给temp[111],由于属性名为111的属性值不存在,判断为true,这样temp = {111:"true"},这样就将111加到temp中了,然后不停的循环。当循环到下一个111的时候,这个时候判断会发现temp[111] = "true",就不会添加进去了。然后再最后一个循环将属性名添加到newAry中,最后返回

  • 相关阅读:
    setlocale set the current locale
    测试一个目录下的文件共有多少行
    ping中用到的校验和算法
    atomic integer operations P176
    我要理解1为什么是0xffffffff,所以写了下面的程序理解。
    贝叶斯网络中一个节点的类
    bash 的浮点除法
    shell(1)
    AndroidBroadcast详解与汇总
    AndroidActivity详解与汇总
  • 原文地址:https://www.cnblogs.com/fws407296762/p/3450228.html
Copyright © 2011-2022 走看看