数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组。
// 方法一思路:
1.构建一个新的数组,用于存放结果。
2.for循环中每次从数组取出一个元素,用这个元素与结果数组的中的每个元素相比。
//方法二思路:(有点:查重效率高;缺点:由于查重之前对数组进行了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种方法便不可取了。)
1.首先给原数组进行排序。
2.检查原数组的第i个元素与结果数组的最后一个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
3.如果不相同,则将该元素存入结果数组中。
PS:如果猿猿们有其他方法,欢迎补充呦!
// 方法一思路:
1.构建一个新的数组,用于存放结果。
2.for循环中每次从数组取出一个元素,用这个元素与结果数组的中的每个元素相比。
3.若结果数组中没有和取出的元素相同,则存放在结果数组中。
//自定义函数
var ret= function(arr){
var res=[arr[0]];
for(var j=1;j<arr.length;j++){
var repeat= false;
for(var i=0;i<res.length;i++){
if(arr[j]==res[i]){
repeat=true;
break;
}
}
if(!repeat){
res.push(arr[j]);
}
}
return res;
};
var a=[1,3,4,3,5,'aa','bb','aa'];
document.write(ret(a)); //1,3,4,5,aa,bb
//或者给数组添加方法
Array.prototype.ret= function(){
var res=[this[0]];
for(var j=1;j<this.length;j++){
var repeat= false;
for(var i=0;i<res.length;i++){
if(this[j]==res[i]){
repeat=true;
break;
}
}
if(!repeat){
res.push(this[j]);
}
}
return res;
}
var a=[1,3,4,3,5,'aa','bb','aa'];
document.write(a.ret()); //1,3,4,5,aa,bb
//方法二思路:(有点:查重效率高;缺点:由于查重之前对数组进行了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种方法便不可取了。)
1.首先给原数组进行排序。
2.检查原数组的第i个元素与结果数组的最后一个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
3.如果不相同,则将该元素存入结果数组中。
//自定义函数
var ret1= function(arr){
arr.sort();
var res= [arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i]!=res[res.length-1]){
res.push(arr[i]);
}
}
return res;
}
var b= [1,3,4,2,3,4];
document.write(ret1(b)); //1,2,3,4
//或者给数组添加方法
Array.prototype.ret1= function(){
this.sort();
var res= [this[0]];
for(var i=1;i<this.length;i++){
if(arr[i]!=res[res.length-1]){
res.push(this[i]);
}
}
return res;
}
var b= [1,3,4,2,3,4];
document.write(b.ret1()); //1,2,3,4
/方法三思路:(推荐使用这个方法)
1.定义一个结果数组存放结果。
2.创建一个新对象。
3.for循环的时候,每次取出一个元素与对象对比,如果这个元素不重复则把它放在结果数组里,同时把这个元素的内容作为对象的属性,并赋值为1。
说明:至于如何对比取出的元素与对象,就是每次从原数组取出一个元素,然后到对象中访问这个属性,如果访问到值,则说明重复。
//自定义函数
var ret2= function(arr){
var res=[];
var json={};
for(var i=0;i<arr.length;i++){
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]]=1;
}
}
return res;
}
var c=[1,2,3,2,1];
document.write(ret2(c)); //1,2,3
//或者给数组添加方法
Array.prototype.ret2= 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 c=[1,2,3,2,1];
document.write(c.ret2()); //1,2,3
PS:如果猿猿们有其他方法,欢迎补充呦!