Phương thức filter
Phương thức filter cho phép lọc
các phần tử của mảng, chỉ giữ lại những phần tử
phù hợp với một điều kiện nhất định.
Phương thức nhận một hàm làm tham số, hàm này sẽ
được thực thi cho từng phần tử của mảng.
Kết quả của phương thức là một mảng mới,
chỉ bao gồm những phần tử
mà hàm được truyền vào trả về true.
Có thể truyền ba tham số vào hàm. Nếu các tham số này tồn tại (chúng không bắt buộc), thì tham số đầu tiên sẽ tự động nhận phần tử của mảng, tham số thứ hai sẽ nhận số thứ tự của nó trong mảng (chỉ mục), và tham số thứ ba - chính là mảng đó.
Cú pháp
let mảng mới = mảng.filter(function(phần tử, chỉ mục, mảng) {
mã
return true hoặc false
});
Ví dụ
Hãy lọc một mảng, chỉ giữ lại trong đó các số dương:
let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(function(elem) {
if (elem >= 0) {
return true;
} else {
return false;
}
});
console.log(res);
Kết quả thực hiện mã:
[5, 1, 1, 3, 4]
Ví dụ
Rút gọn mã, sử dụng hàm mũi tên:
let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => {
if (elem >= 0) {
return true;
} else {
return false;
}
});
console.log(res);
Kết quả thực hiện mã:
[5, 1, 1, 3, 4]
Ví dụ
Rút gọn mã, sử dụng cách viết rút gọn của các phép toán logic:
let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => {
return elem >= 0;
});
console.log(res);
Kết quả thực hiện mã:
[5, 1, 1, 3, 4]
Ví dụ
Rút gọn mã, sử dụng đặc điểm của hàm mũi tên:
let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => elem > 0);
console.log(res);
Kết quả thực hiện mã:
[5, 1, 1, 3, 4]
Ví dụ
Nếu cần, có thể truyền chính mảng đó vào tham số thứ ba:
let res = arr.filter(function(elem, index, arr) {
mảng arr sẽ có thể truy cập ở đây
});