天天看點

數組元素去重的方法

今天給朋友們帶來數組元素去重的方法:

​首先我們定義一組資料:​

let array = [3, 1, 7, 1, 3, 2, 5, 4, 3, 2, 5, 7, 8, 9, 8];
let newArray = [];      

​接下來我們分别用不同的方法去對他進行去重。放到newArray裡面。​

一:ES3普通循環

function has(array,val){
  for(var i=0,len=array.length;i<len;i++){
    if(array[i]===val)
      return true;
  }
  return false;
}
for (let i = 0, len = array.length; i < len; i++) {
  if(!has(newArray, array[i])) {
    newArray.push(array[i]);
  }
}      

壓縮到一個函數裡:

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

二:ES5中的方法:forEach、indexOf

array.forEach(function(curr) {
  if (newArray.indexOf(curr) === -1) {
    newArray.push(curr);
  }
})      

三:ES5中的reduce方法:

newArray = array.reduce((init, curr) => {
  if (init.indexOf(curr) === -1) {
    init.push(curr);
  }
  return init;
}, [])      

四:ES5中的Array.from()和ES6Set()方法結合:

newArray = Array.from(new Set(array));      

五:不推薦的方法:

let set = new Set();
array.forEach(function(curr){
  set.add(curr);
});
newArray = Array.from(set);

newArray = Array.from(new Set(array));      

我們不管用上述的哪一種方法都會發現newArray裡面已經沒有重複的值了,我們已經完成了去重。

數組中的對象去重: