Phương pháp filter[]
tạo ra một bản sao nông của một phần của một mảng đã cho, được lọc xuống chỉ các phần tử từ mảng đã cho vượt qua thử nghiệm được thực hiện bởi hàm được cung cấp.filter[]
method creates a shallow copy of a portion of a given array, filtered down to just the elements from the given array that pass the test implemented by the provided function.Thử nó
Cú pháp
// Arrow function
filter[[element] => { /* … */ }]
filter[[element, index] => { /* … */ }]
filter[[element, index, array] => { /* … */ }]
// Callback function
filter[callbackFn]
filter[callbackFn, thisArg]
// Inline callback function
filter[function [element] { /* … */ }]
filter[function [element, index] { /* … */ }]
filter[function [element, index, array] { /* … */ }]
filter[function [element, index, array] { /* … */ }, thisArg]
Thông số
callbackFn
Một hàm để thực thi cho mỗi phần tử trong mảng. Nó sẽ trả về một sự thật để giữ phần tử trong mảng kết quả và giá trị giả.
Hàm được gọi với các đối số sau:
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
0Phần tử hiện tại được xử lý trong mảng.
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
1Chỉ số của phần tử hiện tại được xử lý trong mảng.
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
2Mảng filter[]
đã được kêu gọi.
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
4 Tùy chọnOptionalGiá trị để sử dụng là
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
5 khi thực hiện callbackFn
. Xem phương pháp lặp.Giá trị trả về
Một bản sao nông của một phần của mảng đã cho, được lọc xuống chỉ các phần tử từ mảng đã cho vượt qua thử nghiệm được thực hiện bởi hàm được cung cấp. Nếu không có phần tử nào vượt qua bài kiểm tra, một mảng trống sẽ được trả về.
Sự mô tả
Phương pháp filter[]
là một phương pháp lặp. Nó gọi hàm ____99 được cung cấp một lần cho mỗi phần tử trong một mảng và xây dựng một mảng mới của tất cả các giá trị mà callbackFn
trả về giá trị sự thật. Các phần tử mảng không vượt qua bài kiểm tra callbackFn
không được bao gồm trong mảng mới.
callbackFn
chỉ được gọi cho các chỉ mục mảng đã gán các giá trị. Nó không được gọi cho các khe trống trong các mảng thưa thớt.
Phương pháp filter[]
là một phương thức sao chép. Nó không thay đổi
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
5 mà thay vào đó trả về một bản sao nông chứa các phần tử giống như các phần tử từ mảng gốc [với một số được lọc ra]. Tuy nhiên, chức năng được cung cấp là callbackFn
có thể làm biến đổi mảng. Tuy nhiên, lưu ý rằng độ dài của mảng được lưu trước khi gọi đầu tiên của callbackFn
. Vì vậy:callbackFn
sẽ không truy cập bất kỳ yếu tố nào được thêm vào ngoài độ dài ban đầu của mảng khi cuộc gọi đếnfilter[]
bắt đầu.- Các thay đổi đối với các chỉ mục đã được truy cập không khiến
callbackFn
được gọi lại trên chúng. - Nếu một phần tử hiện có, chưa được liên kết của mảng được thay đổi bởi
callbackFn
, giá trị của nó được chuyển chocallbackFn
sẽ là giá trị tại thời điểm phần tử đó được truy cập. Các yếu tố bị xóa không được truy cập.
CẢNH BÁO: Sửa đổi đồng thời của loại được mô tả ở trên thường xuyên dẫn đến mã khó hiểu và thường được tránh [ngoại trừ trong các trường hợp đặc biệt]. Concurrent modifications of the kind described above frequently lead to hard-to-understand code and are generally to be avoided [except in special cases].
Phương pháp filter[]
là chung chung. Nó chỉ mong đợi giá trị
function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
5 có thuộc tính const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: 'undefined' },
];
let invalidEntries = 0;
function filterByID[item] {
if [Number.isFinite[item.id] && item.id !== 0] {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter[filterByID];
console.log['Filtered Array\n', arrByID];
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log['Number of Invalid Entries = ', invalidEntries];
// Number of Invalid Entries = 5
3 và các thuộc tính được khóa.Ví dụ
Lọc ra tất cả các giá trị nhỏ
Ví dụ sau sử dụng filter[]
để tạo một mảng được lọc có tất cả các phần tử có giá trị nhỏ hơn
const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: 'undefined' },
];
let invalidEntries = 0;
function filterByID[item] {
if [Number.isFinite[item.id] && item.id !== 0] {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter[filterByID];
console.log['Filtered Array\n', arrByID];
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log['Number of Invalid Entries = ', invalidEntries];
// Number of Invalid Entries = 5
5 bị xóa.function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
Tìm tất cả các số nguyên tố trong một mảng
Ví dụ sau trả về tất cả các số nguyên tố trong mảng:
const array = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
function isPrime[num] {
for [let i = 2; num > i; i++] {
if [num % i === 0] {
return false;
}
}
return num > 1;
}
console.log[array.filter[isPrime]]; // [2, 3, 5, 7, 11, 13]
Lọc các mục không hợp lệ từ JSON
Ví dụ sau đây sử dụng filter[]
để tạo JSON được lọc của tất cả các phần tử với số không, số
const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: 'undefined' },
];
let invalidEntries = 0;
function filterByID[item] {
if [Number.isFinite[item.id] && item.id !== 0] {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter[filterByID];
console.log['Filtered Array\n', arrByID];
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log['Number of Invalid Entries = ', invalidEntries];
// Number of Invalid Entries = 5
7.const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: 'undefined' },
];
let invalidEntries = 0;
function filterByID[item] {
if [Number.isFinite[item.id] && item.id !== 0] {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter[filterByID];
console.log['Filtered Array\n', arrByID];
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log['Number of Invalid Entries = ', invalidEntries];
// Number of Invalid Entries = 5
Tìm kiếm trong mảng
Ví dụ sau sử dụng filter[]
để lọc nội dung mảng dựa trên tiêu chí tìm kiếm.
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
/**
* Filter array items based on search criteria [query]
*/
function filterItems[arr, query] {
return arr.filter[[el] => el.toLowerCase[].includes[query.toLowerCase[]]];
}
console.log[filterItems[fruits, 'ap']]; // ['apple', 'grapes']
console.log[filterItems[fruits, 'an']]; // ['banana', 'mango', 'orange']
Sử dụng Filter [] trên các mảng thưa thớt
filter[]
sẽ bỏ qua các khe trống.
console.log[[1, , undefined].filter[[x] => x === undefined]]; // [undefined]
console.log[[1, , undefined].filter[[x] => x !== 2]]; // [1, undefined]
Gọi bộ lọc [] trên các đối tượng không phải là
Phương thức filter[]
đọc thuộc tính
const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: 'undefined' },
];
let invalidEntries = 0;
function filterByID[item] {
if [Number.isFinite[item.id] && item.id !== 0] {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter[filterByID];
console.log['Filtered Array\n', arrByID];
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log['Number of Invalid Entries = ', invalidEntries];
// Number of Invalid Entries = 5
3 của function isBigEnough[value] {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter[isBigEnough];
// filtered is [12, 130, 44]
5 và sau đó truy cập vào từng chỉ mục số nguyên.const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
};
console.log[
Array.prototype.filter.call[arrayLike, [x] => x el.toLowerCase[].includes[query.toLowerCase[]]];
}
console.log[filterItems[fruits, 'ap']]; // ['apple', 'grapes']
console.log[filterItems[fruits, 'an']]; // ['banana', 'mango', 'orange']
3 khi mảng được sửa đổi.// Modifying each word
let words = ['spray', 'limit', 'exuberant', 'destruction', 'elite', 'present'];
const modifiedWords = words.filter[[word, index, arr] => {
arr[index + 1] += ' extra';
return word.length {"sử dụng nghiêm ngặt";const bình phương = mảng.bộ lọc [[num] => num> 0 && num % parseInt [num] === 0].Bản đồ [[num] => toán học.