Giả sử chúng ta cần viết một phương thức mảng ghi đè lên Array.prototype.slice() mặc định. Thông thường, phương thức Array.prototype.slice() nhận hai tham số là chỉ số bắt đầu và chỉ số kết thúc, trả về một mảng con từ chỉ số start đến end - 1.
Mục tiêu của chúng ta là làm cho hàm slice() này trả về mảng con từ chỉ số start đến end (bao gồm cả end). Dưới đây là mã thực hiện: chúng ta duyệt qua mảng bằng vòng lặp for (thực tế nhanh hơn các phương thức mảng tích hợp), sau đó trả về mảng con cần thiết, cuối cùng ghi đè Array.prototype.slice() bằng phương thức vừa viết.
Ví dụ
const arr = [5, 5, 34, 43, 43, 76, 78, 3, 23, 1, 65, 87, 9];
const slice = function(start = 0, end = this.length - 1) {
const part = [];
for (let i = start; i <= end; i++) {
part.push(this[i]);
}
return part;
};
Array.prototype.slice = slice;
console.log(arr.slice(0, 4));
console.log(arr.slice(5, 8));
console.log(arr.slice());
Kết quả
Đầu ra trong console sẽ là:
[ 5, 5, 34, 43, 43 ]
[ 76, 78, 3, 23 ]
[ 5, 5, 34, 43, 43, 76, 78, 3, 23, 1, 65, 87, 9 ]