数组去重及for循环嵌套的学习

方法一思路(包含for循环嵌套)

1.构建一个新的数组存放结果

2.for循环每次从数组中取出一个元素,用这个元素与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中

Array.prototype.unique1 = function(){
    var res = this[0];
    for(var i=1; i<this.length; i++){
         var repeat = false;
         for(var j=0; j<res.length; i++){
             if(res[j]==this[i]){
                repeat = true;
                break;
             }
        }
         if(!repeat){
             res.push(this[i]);
         }
    } 
     return res;  
}        
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0];
alert(arr.unique1());

方法二

1.现将原数组进行排序
2.检查原数组中的第i个元素与结果数组中的最后一个
元素是否相同,因为已经排序,所以重复元素会在
相邻位置
3.如果不相同,则将该元素存入结果数组中

Array.prototype.unique2 = function(){
    this.sort();
    var res = [this[0]];
    for(var i=1; i<this.length; i++){
          if(this[i]!==res[res.length-1]){
        res.push(this[i]);
      }
     }
    return res;
}

方法三

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 = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());

 

posted @ 2017-03-08 11:35  杜小雨  阅读(460)  评论(0)    收藏  举报