JS數(shù)組去重你知道有幾種方法

1.參考答案一:利用ES6新增數(shù)據(jù)類型 Set

Set類似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。

function uniq(arry) {
    return [...new Set(arry)];
}



2.參考答案二:利用 indexOf

function uniq(arry) {
    var result = [];
    for (var i = 0; i < arry.length; i++) {
        if (result.indexOf(arry[i]) === -1) {
            //如 result 中沒(méi)有 arry[i],則添加到數(shù)組中
            result.push(arry[i])
        }
    }
    return result;
}



3.參考答案三:利用 includes

function uniq(arry) {
    var result = [];
    for (var i = 0; i < arry.length; i++) {
        if (!result.includes(arry[i])) {
            //如 result 中沒(méi)有 arry[i],則添加到數(shù)組中
            result.push(arry[i])
        }
    }
    return result;
}



4.參考答案四:利用 reduce

function uniq(arry) {
    return arry.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
}



5.參考答案五:利用 Map


function arrayNonRepeatfy(arr) {
  let hashMap = new Map();
  let result = new Array();  // 數(shù)組用于返回結(jié)果
  for (let i = 0; i < arr.length; i++) {
    if(hashMap.has(arr[i])) { // 判斷 hashMap 中是否已有該 key 值
      hashMap.set(arr[i], true);  // 后面的true 代表該 key 值在原始數(shù)組中重復(fù)了,false反之
    } else {  // 如果 hashMap 中沒(méi)有該 key 值,添加
      hashMap.set(arr[i], false);  
      result.push(arr[i]);
    }
  }
  return result;
}



作者:Vam的金豆之路

主要領(lǐng)域:前端開發(fā)

我的微信:maomin9761

微信公眾號(hào):前端歷劫之路