数组去重--对象键值对法

2017-07-19  本文已影响0人  gaoqizhuhui

思想:

(1).把数组中的每一项的值当作一个对象的属性名和属性值存起来

(2).但在每一次存储之前,首先判断当前这一项N是否在对象中已经存在了obj[N],如果值是N说明对象中已经存在这一项了(也说明在N之前数组中已经出现过一次N了),当前这一项已经重复了,在数组中把这一项删除。

如果值是undefined,说明对象中还没有这一项,也就是当前这一项还没有在数组中出现过,把当前项当作对象的属性名和属性值存进去。

eg:

var ary=[1,2,3,2,3,1,2,3,4,2,3,1,2,3,2,1,2,3];

var obj={};

for (var i=0; i<ary.length; i++) {

      var cur=ary [ i ];

      if (obj [cur] == cur){//说明对象中已经存在cur这一项了,也说明cur在数组中重复了,需要把当前这一项删除掉

//把数组末尾那一项拿过来替换当前项,再把数组末尾那一项的值删除掉

           ary [ i ]=ary [ary.length-1];

            i--;  //删除后下一项的索引往前了一位

            continue;

       }

       obj[cur] = cur;

}

上一篇 下一篇

猜你喜欢

热点阅读