Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Triển khai hàm tùy chỉnh giống Array.prototype.filter() bằng JavaScript


Vấn đề

Chúng ta cần viết một hàm JavaScript nằm trên đối tượng prototype của lớp Array.

Hàm nhận vào một hàm callback làm đối số duy nhất. Hàm callback này phải được gọi cho mỗi phần tử của mảng.

Và hàm callback đó nhận hai đối số là phần tử tương ứng và chỉ số của nó. Nếu hàm callback trả về true, chúng ta nên đưa phần tử tương ứng vào mảng kết quả, ngược lại loại bỏ.

Ví dụ

Dưới đây là mã:

const arr = [5, 3, 6, 2, 7, -4, 8, 10]; 
const isEven = num => num % 2 === 0; 
Array.prototype.customFilter = function(callback){ 
  const res = []; 
  for(let i = 0; i < this.length; i++){ 
    const el = this[i]; 
    if(callback(el, i)){ 
      res.push(el); 
    }; 
  }; 
  return res; 
}; 
console.log(arr.customFilter(isEven));

Kết quả

[ 6, 2, -4, 8, 10 ]