思想:
(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;
}
网友评论