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]
Array.prototype.myMap = function (cb) { let output = []; for (let i = 0; i < this.length; ++i) { output.push(cb(this[i], i, this)); } return output; };
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]
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; };
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
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!