1. 程式人生 > 程式設計 >js陣列中去除重複值的幾種方法

js陣列中去除重複值的幾種方法

在日常開發中,我們可能會遇到將一個數組中裡面的重複值去除,那麼,我就將我自己所學習到的幾種方法分享出來

  去除陣列重複值方法:

    1,利用indexOf()方法去除

    思路:建立一個新陣列,然後迴圈要去重的陣列,然後用新陣列去找要去重陣列的值,如果找不到則使用.push新增到新陣列,最後把新陣列返回回去就行了

       看不懂沒關係,上程式碼就比較容易懂了

function fun(arr){
 let newsArr = [];
 for (let i = 0; i < arr.length; i++) {
  if(newsArr.indexOf(arr[i]) === -1){
   newsArr.push(arr[i]);
  }
 }
 return newsArr;
}

    2,利用splice方法去除

    思路:這個方法有點模仿冒泡 倆層迴圈,外層迴圈遍歷陣列,內層迴圈比較值,如果有相同, 則使用splice去除 然後返回處理完的陣列即可

       看不懂沒關係,上程式碼就比較容易懂了

function fun(arr){
 for (let i = 0; i < arr.length; i++) {
  for(let j = i+1; j < arr.length; j++){
   if(arr[i]==arr[j]){
    arr.splice(j,1);          j--;
   }
  }
 }
 return arr;
}

    3,利用es6新增的集合Set去除

    這裡簡單介紹一下Set 集合,他跟陣列很相識,但不是陣列,是集合。他裡面也有跟多方法,如增(add),刪(delete),查(has)等等。

    他最重要的特點是:元素不能重複,即在Set集合不會出現相同的元素

    Set去重方案1:

    思路:因為Set集合裡面不允許出現重複值,那我們就可以利用這個特點將我們的陣列傳進去去重

       首先new一個Set集合將要去重的陣列作為引數傳進去,然後建立一個新陣列,迴圈遍歷一下集合,將每個集合元素新增到新陣列,最後將新陣列返回即可

function fun(arr){
 let s1 = new Set(arr);
 let arr2 = [];
 for(let item of s1){
  arr2.push(item);
 }
 return arr2;
}

    Set去重方案2(使用陣列方法Array.form()):

    思路:Array.from(); 能夠把偽陣列,集合轉成陣列型別,這個方法配合上Set集合就剛好符合我們的需求

function fun(arr){
 let s1 = new Set(arr); 
 return Array.from(s1);
}

    Set去重方案3(使用es6展開運算子...):

    思路:es6展開運算子能夠將一個數組轉為用逗號分隔的引數序列

function fun(arr){
 let s1 = new Set(arr); 
 return [...s1];
}

以上就是js陣列中去除重複值的幾種方法的詳細內容,更多關於js陣列去除重複值的資料請關注我們其它相關文章!