Rumah  >  Artikel  >  hujung hadapan web  >  Polyfill untuk Kaedah Peta, Penapis dan Kurangkan dalam Javascript

Polyfill untuk Kaedah Peta, Penapis dan Kurangkan dalam Javascript

王林
王林asal
2024-08-16 06:18:12613semak imbas

Polyfill for Map, Filter, and Reduce Methods in Javascript

Peta

Ia mengembalikan tatasusunan baharu daripada tatasusunan asal, dengan melaksanakan beberapa operasi(fungsi panggil balik) pada setiap item tatasusunan. Ia tidak mengubah tatasusunan asal.

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

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

Perlaksanaan

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

Penapis

Ia mengembalikan tatasusunan baharu yang mengandungi hanya elemen yang memenuhi syarat yang diberikan (iaitu, yang panggilan balik itu mengembalikan benar). Tatasusunan asal kekal tidak berubah.

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

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

Perlaksanaan

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

Kurangkan

Ia mungkin yang paling rumit daripada ketiga-tiganya. Kaedah ini memproses elemen tatasusunan untuk menghasilkan nilai output tunggal.

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

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

console.log(sum); // 10

Perlaksanaan

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

Atas ialah kandungan terperinci Polyfill untuk Kaedah Peta, Penapis dan Kurangkan dalam Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn