中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js怎么實現數組去重

發布時間:2021-05-20 16:53:35 來源:億速云 閱讀:183 作者:Leah 欄目:web開發

js怎么實現數組去重?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、普通的方法去重

1、簡單的去重方法

// 最簡單數組去重法
/*
* 新建一新數組,遍歷傳入數組,值不在新數組就push進該新數組中
* IE8以下不支持數組的indexOf方法
*/
function uniq(array){
  var temp = []; //一個新的臨時數組
  for(var i = 0; i < array.length; i++){
    if(temp.indexOf(array[i]) == -1){
      temp.push(array[i]);
    }
  }
  return temp;
}
var newArray = [1,2,2,4,9,6,7,5,2,3,5,6,5];
console.log(uniq(newArray));// [1, 2, 4, 9, 6, 7, 5, 3]
/*
var newArray = ['mu','zi','dig','big','z','mu','zi','muzidigbig']
console.log(uniq(newArray));//["mu", "zi", "dig", "big", "z", "muzidigbig"]
*/

js怎么實現數組去重

2、數組下標法

/*
* 還是得調用“indexOf”性能跟方法1差不多,
* 實現思路:如果當前數組的第i項在當前數組中第一次出現的位置不是i,
* 那么表示第i項是重復的,忽略掉。否則存入結果數組。
*/
function uniq(array){
  var temp = [];
  for(var i = 0; i < array.length; i++) {
    //如果當前數組的第i項在當前數組中第一次出現的位置是i,才存入數組;否則代表是重復的
    if(array.indexOf(array[i]) == i){
      temp.push(array[i])
    }
  }
  return temp;
}
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa));//[1, 2, "2", 4, 9, "a", 3, 5, 6]

3、排序后相鄰去除法

/*
* 給傳入數組排序,排序后相同值相鄰,
* 然后遍歷時,新數組只加入不與前一值重復的值。
* 會打亂原來數組的順序
*/
function uniq(array){
  array.sort();
  console.log(array.sort());
  var temp=[array[0]];
  for(var i = 1; i < array.length; i++){
    if( array[i] !== temp[temp.length-1]){
      temp.push(array[i]);
    }
  }
  return temp;
}
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa));//[1, "2", 2, 3, 4, 5, 6, 9, "a"]

4、優化遍歷數組法

// 思路:獲取沒重復的最右一值放入新數組
/*
* 推薦的方法
* 方法的實現代碼相當酷炫,
* 實現思路:獲取沒重復的最右一值放入新數組。
* (檢測到有重復值時終止當前循環同時進入頂層循環的下一輪判斷)
*/
function uniq(array){
  var temp = [];
  var index = [];
  var l = array.length;
  for(var i = 0; i < l; i++) {
    for(var j = i + 1; j < l; j++){
      if (array[i] === array[j]){
        i++;
        j = i;
      }
    }
    temp.push(array[i]);
    index.push(i);
  }
  console.log(index);//[0, 2, 5, 6, 7, 8, 9]
  return temp;
}
var aa = [1,2,2,3,5,3,6,5,'3','muzi'];
console.log(uniq(aa));// [1, 2, 3, 6, 5, "3", "muzi"]

5.數組includes()去重

//利用數組原型對象上的includes方法
function unique(arr){
 var bArr= [];
 for(var i=0; i<arr.length; i++){
  if( !bArr.includes(arr[i]) ){ // 如果bArr新數組包含當前循環item
   bArr.push(arr[i]);
  }
 }
 return bArr;
}
var aa = [1,2,2,3,5,3,6,5,'3','muzi'];
console.log(unique(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

6.數組原型對象上的filter和includes方法

//利用數組原型對象上的filter和includes方法
function unique6(arr){
 var bArr= [];
 bArr= arr.filter(function(item){
 return bArr.includes(item) ? null : bArr.push(item);
 });
 return bArr;
}
var aa = [1,2,2,3,5,3,6,5,'3','muzi'];
console.log(unique6(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

7.數組原型對象上的forEach和includes方法

//利用數組原型對象上的forEach和includes方法
function unique7(arr){
 var bArr= [];
 arr.forEach(function(item){
  bArr.includes(item) ? null : bArr.push(item);
 }); 
 return bArr;
}
var aa = [1,2,2,3,5,3,6,5,'3','muzi'];
console.log(unique7(aa))//[1, 2, 3, 5, 6, "3", "muzi"]

二、原型對象去重

方法一:

思路:1)構建一個臨時數組存放結果;

            2)循環遍歷當前數組,判斷當前數組下標為i的元素是否已經保存在臨時數組,如果已保存,則跳過,否則將此元素保存到臨時數組中。

  Array.prototype.method1 = function(){
    var arr=[];  //定義一個臨時數組
    for(var i = 0; i < this.length; i++){  //循環遍歷當前數組
      //判斷當前數組下標為i的元素是否已經保存到臨時數組
      //如果已保存,則跳過,否則將此元素保存到臨時數組中
      if(arr.indexOf(this[i]) == -1){
        arr.push(this[i]);
      }
    }
    return arr;
  };
  var arrNum1 = [1,4,1,1,3,3,4,6,7,8,3,7,0,2,11,2,'muzi','digbig','muzi'];
  console.log(arrNum1.method1());//[1, 4, 3, 6, 7, 8, 0, 2, 11, "muzi", "digbig"]

三、es6去重

  let arr = [1,2,2,3,4,4,4];
  let s = new Set(arr);
  //結果:Set {1,2,3,4}
  let newArr = Array.from(s);
  //結果:[1,2,3,4],完成去重

js怎么實現數組去重

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

新密市| 木兰县| 韩城市| 财经| 申扎县| 定安县| 温泉县| 惠水县| 虎林市| 松桃| 漳浦县| 宽城| 乡宁县| 临朐县| 尼勒克县| 广丰县| 瑞丽市| 读书| 磐安县| 罗平县| 时尚| 治多县| 韩城市| 时尚| 图木舒克市| 巩义市| 连江县| 富裕县| 阳城县| 临洮县| 兴山县| 新巴尔虎右旗| 乐平市| 南京市| 通州区| 桂林市| 绍兴市| 嘉义县| 桐庐县| 镇原县| 调兵山市|