自定义数组方法

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中,最后返回

 

posted on 2013-11-29 19:52  松鼠闹IT  阅读(626)  评论(0编辑  收藏  举报

导航