<!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>
JavaScript实现数组去重
最新推荐文章于 2024-06-01 07:27:22 发布