JavaScript实现数组去重

来源:互联网 发布:西安新城网络花店 编辑:程序博客网 时间:2024/05/20 16:35
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>// 方法一/*1.创建一个新的数组存放结果2.创建一个空对象3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复Array.prototype.unique3=function(){var res =[];var json = {};for(var i=0;i<this.length;i++){if(!json[this[i]]){res.push(this[i]);json[this[i]]=1;}}return res;}var arr = [1,2,5,7,1,6,2,6,'nihao',5,8,9,'nihao'];alert(arr.unique3());// 方法二  新建一空数组,循环arr数组,每次循环都用res里的值比较有没有重,效率不高。/*Array.prototype.unique2=function(){var res = [this[0]];for(var i=0;i<this.length;i++){var repeat = false;for(var j=0;j<res.length;j++){if(res[j]==this[i]){repeat = true;break;}}if(!repeat){res.push(this[i]);}}return res;}var arr = [2,5,7,1,6,2,6,'nihao',5,8,1,9,'nihao'];alert(arr.unique2());*/// 方法三 先排序数组,遍历arr,每次循环比较res最后一个数,效率较高。/*Array.prototype.unique1=function(){this.sort();var res = [this[0]];for(var i=0;i<this.length;i++){if(this[i]!=res[res.length-1]){res.push(this[i]);}}return res;}var arr = [2,5,7,1,6,2,6,'nihao',5,8,1,9,'nihao'];alert(arr.unique1());*/</script></body></html>

原创粉丝点击