Các. Phương thức filter[] trong JavaScript tạo một mảng mới với tất cả các phần tử vượt qua bài kiểm tra được triển khai bởi hàm được cung cấp
- jav
Mục lục
Đôi khi chúng tôi có một mảng nhưng chúng tôi chỉ muốn trả về một vài mục được chọn từ mảng. Ví dụ: chúng ta có thể sử dụng phương thức array.filter[]
để lọc một mảng người để chỉ tìm các nhân vật nữ của mảng
const people = [ { name: 'Debbie', gender: 'female' }, { name: 'Josh', gender: 'male' }]
Phương thức
people.filter[[currentValue, index, originalArray] => { // decide who should be returned return currentValue.gender === 'female'}]
0 gọi hàm gọi lại 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 cho tất cả các giá trị vượt qua bài kiểm tra được cung cấp trong hàm gọi lại nàyHàm nhận 3 đối số,
- giá trị hiện tại, là giá trị hiện tại chúng tôi đang lặp lại
- chỉ mục, chúng ta đang lặp đi lặp lại những gì
- mảng ban đầu mà bộ lọc được gọi
people.filter[[currentValue, index, originalArray] => { // decide who should be returned return currentValue.gender === 'female'}]
Chúng ta có thể loại trừ mảng ban đầu trong hàm gọi lại nếu chúng ta không sử dụng nó. Chúng tôi có thể muốn sử dụng nó để đẩy một cái gì đó vào mảng trước khi chúng tôi thực hiện kiểm tra những gì sẽ trả về nhưng nếu không, chúng tôi chỉ cần xóa nó
people.filter[[currentValue, index] => { // decide who should be returned return currentValue.gender === 'female'}]
Thông thường, chúng ta đặt tên cho giá trị hiện tại là số ít của mảng, vì vậy trong trường hợp này, chúng ta nên đặt tên cho nó là người
people.filter[[person, index] => { return person.gender === 'female'}]
Chúng ta cũng có thể sử dụng chức năng mũi tên để thay thế
people.filter[[person, index] => { return person.gender === 'female'}]
Vì chúng tôi không sử dụng chỉ mục nên chúng tôi có thể loại bỏ điều đó. Chúng ta cũng có thể loại bỏ dấu ngoặc đơn vì chúng ta không cần chúng nếu chỉ có một đối số trong hàm mũi tên
people.filter[[person] => { return person.gender === 'female'}]
Và vì nó chỉ là một dòng mà chúng tôi đang trả lại, chúng tôi có thể xóa trả về và dấu ngoặc nhọn và có tất cả trên một dòng giữ cho nó rất ngắn. Điều này có thể mất một chút thời gian để làm quen vì nó không dễ đọc như các ví dụ trước nhưng nhiều người sẽ sử dụng định dạng này
Hãy nghĩ về nó như là, đối với mảng người lọc mọi người và trả về những người có giới tính nữ
people.filter[person => person.gender === 'female']
Điều tuyệt vời về bộ lọc là nó không làm thay đổi mảng ban đầu. Vì vậy, nếu bạn
people.filter[[currentValue, index, originalArray] => { // decide who should be returned return currentValue.gender === 'female'}]
0, bạn vẫn sẽ nhận được tất cả những người từ mảng người khi bộ lọc tạo một mảng mới. Do đó, chúng tôi có thể lưu trữ bộ lọc mới của mình trong một const________số 8Dán nó vào bảng điều khiển để tự mình xem và thử với các giá trị hoặc kiểm tra codepen tôi đã tạo