//删除数组中重复的元素 var numArr=[6,3,1,2,3,4,5,3,3,3,3,3,3,4,4,4,4,4,4,4,6]; for(var i=0;i<numArr.length;i++){ for(j=i+1;j<numArr.length;){//当两个元素相等,删掉一个之后,j的数值不变,还是原先的数 if(numArr[i]==numArr[j]){ numArr.splice(j, 1); } else{ j++;//当两个元素不相同时,指针往后移动 } } } document.write(numArr); 好吧,这是最常见的思路,扩展性不好,可以采取给Array对象添加方法,就不需要再碰到同样的问题 还要把js再写一 遍了,只需调用XX.remove() Array.prototype.remove=function(){ var arr=[]; for(var i=0;i<this.length;i++){ for(j=i+1;j<this.length;){ if(this[i]==this[j]){ this.splice(j, 1); } else{ j++;//当两个元素不相同时,指针往后移动 } } } return arr; if(arr==null){alert("未定义")} } var arr=[6,3,1,2,3,4,5,3,3,3,3,3,3,4,4,4,4,4,4,4,6]; arr.remove(); alert(arr);
下面的方法是采用的hash算法,真是具简洁啊
Array.prototype.unique = function() { var data = []; var a = {}; //声明一个对象,javascript的对象可以当哈希表用 for (var i = 0; i < this.length; i++) { if(!a[this[i]]){ a[this[i]] = true; data[data.length] = this[i]; } } return data; }; var a = [6,3,1,2,3,4,5,3,3,3,3,3,3,4,4,4,4,4,4,4,6]; alert(a); alert(a.unique());