數組去重,利用 ES6 的 reduce() 方法 和 include 判斷 實現


預備知識:
reduce: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
concat: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
includes: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
注意: 必須熟悉上面三個數組原型上的方法才能看懂下面的。

// 1. 要去重的數組
const targets = [1, 1, 2, 3, 4, 3, 3];

// 2.采用 reduce + includes 來實現
const noRepeat = targets.reduce((previousValue, currentValue, index, array) => {
  // 判斷之前返回的值 是否 不包含當前值,如果 不包含 就滿足條件,注意這里有 !運算符
  if (!previousValue.includes(currentValue)) {
    // 如果 previousValue(之前迭代返回的值) 中不 includes(包含) 那就將當前值 concat(合並) 進數組
    // 並返回 作為 下一次迭代的 previousValue 值
    return previousValue.concat(currentValue);
  }
  // 如果上面判斷發現 currentValue 存在 上一次迭代返回的 previousValue  中
  // ,那就證明當前 currentValue 的值是重復的,那就不會被合並進下一次迭代的 previousValue 中,不做任何修改直接返回 去下一次迭代。
  return previousValue;
}, []);
// 注意: reduce 的第二個參數 reduce(()=> {},[]) 是指 previousValue 第一次迭代的值,必須提供一個空數組,
// 不然默認會以 targets 數組中的第一個數組元素當作第一次迭代的 previousValue 值。

// 打印結果輸出驗證
console.log(noRepeat);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM