Heim  >  Artikel  >  Web-Frontend  >  Polyfill für Map-, Filter- und Reduce-Methoden in Javascript

Polyfill für Map-, Filter- und Reduce-Methoden in Javascript

王林
王林Original
2024-08-16 06:18:12613Durchsuche

Polyfill for Map, Filter, and Reduce Methods in Javascript

Karte

Es gibt ein neues Array vom ursprünglichen Array zurück, indem einige Operationen (Rückruffunktion) für jedes Array-Element ausgeführt werden. Das ursprüngliche Array wird dadurch nicht verändert.

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

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

Durchführung

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

Filter

Es wird ein neues Array zurückgegeben, das nur die Elemente enthält, die die angegebene Bedingung erfüllen (d. h. für die der Rückruf „true“ zurückgibt). Das ursprüngliche Array bleibt unverändert.

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

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

Durchführung

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;
};

Reduzieren

Es ist wahrscheinlich das komplizierteste von allen dreien. Diese Methode verarbeitet die Elemente eines Arrays, um einen einzelnen Ausgabewert zu erzeugen.

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

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

console.log(sum); // 10

Durchführung

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;
};

Das obige ist der detaillierte Inhalt vonPolyfill für Map-, Filter- und Reduce-Methoden in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn