首頁  >  文章  >  web前端  >  Javascript 中 Map、Filter 和 Reduce 方法的 Polyfill

Javascript 中 Map、Filter 和 Reduce 方法的 Polyfill

王林
王林原創
2024-08-16 06:18:12659瀏覽

Polyfill for Map, Filter, and Reduce Methods in Javascript

地圖

它透過對每個數組項執行一些操作(回調函數)從原始數組傳回新數組。它不會改變原始數組。

const nums = [1, 2, 3, 4];

const double = nums.map((num, i, arr) => num * 2);
console.log(double); // [2, 4, 6, 8]

執行

Array.prototype.myMap = function (cb) {
  let output = [];
  for (let i = 0; i < this.length; ++i) {
    output.push(cb(this[i], i, this));
  }
  return output;
};

篩選

它傳回一個新數組,僅包含滿足給定條件的元素(即回調傳回 true)。原始數組保持不變。

const nums= [1, 2, 3, 4];

const greaterThan2 = nums.filter((num, i, arr) => num > 2);
console.log(greaterThan2); // [3, 4]

執行

Array.prototype.myFilter = function (cb) {
  let output = [];
  for (let i = 0; i < this.length; ++i) {
    if (cb(this[i], i, this)) output.push(this[i]);
  }
  return output;
};

減少

這可能是這三個中最複雜的一個。此方法處理數組的元素以產生單一輸出值。

const nums = [1, 2, 3, 4];

const sum = nums.reduce((acc, num) => acc + num, 0);

console.log(sum); // 10

執行

Array.prototype.myReduce = function (cb, initialValue) {
  let accumulator = initialValue;
  for (let i = 0; i < this.length; ++i) {
    accumulator = accumulator!== undefined ? cb(accumulator, this[i], i, this) : this[i];
  }
  return accumulator;
};

以上是Javascript 中 Map、Filter 和 Reduce 方法的 Polyfill的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn