Làm cách nào để lọc một mảng đối tượng trong javascript theo giá trị thuộc tính?
Phương thức 4 trả về một mảng mới với tất cả các phần tử thỏa mãn điều kiện trong hàm gọi lại được cung cấp. Do đó, bạn có thể sử dụng phương pháp này để lọc một mảng đối tượng theo giá trị của một thuộc tính cụ thể, chẳng hạn như theo cách sau // ES5+ const employees = [ { name: 'John', department: 'sales' }, { name: 'Wayne', department: 'marketing' }, { name: 'David', department: 'IT' }, { name: 'Bruce', department: 'marketing' }, ]; const filtered = employees.filter(function (emp) { return emp.department === 'marketing' }); console.log(filtered); /* [ {name: "Wayne", department: "marketing"}, {name: "Bruce", department: "marketing"} ] */ Nếu không tìm thấy kết quả khớp thì phương thức 4 sẽ trả về một mảng trống Với arrow functions của ES6, bạn có thể rút gọn cú pháp một chút, ví dụ như vậy // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ... Trong ES6+, bạn cũng có thể giải nén trực tiếp đối tượng trong đối số của hàm gọi lại, ví dụ như vậy // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ... Sử dụng vòng lặpNếu bạn không thể hỗ trợ ES5, thì bạn chỉ cần sử dụng một vòng lặp (chẳng hạn như vòng lặp 6) để lặp lại mảng đối tượng và điền vào một mảng mới các phần tử mà bạn muốn giữ lại. Ví dụ. const employees = [ { name: 'John', department: 'sales' }, { name: 'Wayne', department: 'marketing' }, { name: 'David', department: 'IT' }, { name: 'Bruce', department: 'marketing' }, ]; const match = []; for (let i = 0; i < employees.length; i++) { if (employees[i].department === 'marketing') { match.push(employees[i]); } } console.log(match); /* [ {name: "Wayne", department: "marketing"}, {name: "Bruce", department: "marketing"} ] */ Nếu không tìm thấy kết quả khớp thì "______87" sẽ là một mảng trống Hy vọng bạn tìm thấy bài viết này hữu ích. Nó được xuất bản vào ngày 05 tháng 6 năm 2021. Hãy thể hiện tình yêu và sự ủng hộ của bạn bằng cách chia sẻ bài đăng này Mảng JavaScript có phương thức 8 cho phép bạn tạo một mảng mới chỉ chứa các phần tử vượt qua một bài kiểm tra nhất định. Nói cách khác, 8 cung cấp cho bạn một mảng mới chỉ chứa các phần tử bạn cần Phương thức 8 nhận một tham số gọi lại và trả về một mảng chứa tất cả các giá trị mà hàm gọi lại trả về 1 cho. Điều đó giúp dễ dàng sử dụng để lọc một mảng đối tượng. Ví dụ: đưa ra một danh sách các ký tự, đây là cách bạn có thể tìm thấy tất cả các ký tự có thuộc tính 2 là 3
Các cuộc gọi lại bộ lọc thường sử dụng các chức năng mũi tên vì các cuộc gọi lại bộ lọc thường là một lớp lót Gọi lại bộ lọc có thể tinh vi tùy ý, miễn là nó đồng bộ. Ví dụ: giả sử bạn có một danh sách các nhân vật trong Star Trek và bạn chỉ muốn lấy các nhân vật đã xuất hiện trong Star Trek. Thế hệ tiếp theo. Đây là cách bạn có thể sử dụng 4 để lọc một mảng các ký tự cho rằng thuộc tính 5 là một mảng Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng phương thức Array 1 của JavaScript để lọc các phần tử trong một mảng Giới thiệu về phương thức mảng JavaScript let bigCities = []; for (let i = 0; i < cities.length; i++) { if (cities[i].population > 3000000) { bigCities.push(cities[i]); } } console.log(bigCities);Code language: JavaScript (javascript)1Một trong những nhiệm vụ phổ biến nhất khi làm việc với mảng là tạo một mảng mới chứa một tập hợp con các phần tử của mảng ban đầu Giả sử bạn có một mảng các đối tượng thành phố trong đó mỗi đối tượng chứa hai thuộc tính. 3 và 4
Để tìm thành phố có dân số lớn hơn 3 triệu người, bạn thường lặp qua các phần tử mảng bằng vòng lặp for và kiểm tra xem giá trị của thuộc tính 4 có thỏa mãn điều kiện hay không, như sau
đầu ra // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...2 Mảng JavaScript cung cấp phương thức 1 cho phép bạn thực hiện tác vụ này theo cách ngắn gọn và rõ ràng hơn Ví dụ sau trả về kết quả tương tự như ví dụ trên // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...4 Trong ví dụ này, chúng ta gọi phương thức 1 của đối tượng mảng 8 và truyền một hàm kiểm tra từng phần tử Bên trong hàm, chúng tôi kiểm tra xem 4 của mỗi thành phố trong mảng có lớn hơn 3 triệu không. Nếu đúng như vậy, hàm trả về // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...20 hoặc // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...21 nếu không. Phương thức 1 bao gồm các phần tử duy nhất trong mảng kết quả nếu chúng thỏa mãn kiểm tra trong hàm gọi lại Bắt đầu với ES6, bạn có thể sử dụng chức năng mũi tên để làm cho nó ngắn gọn hơn // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...1 Chi tiết về phương thức JavaScript Array filter()Sau đây minh họa cú pháp của phương thức 1 // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...3 Phương thức 1 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 thực hiện bởi hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...25 Bên trong, phương thức 1 lặp lại từng phần tử của mảng và chuyển từng phần tử vào hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27. Nếu hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27 trả về // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...20, thì hàm này bao gồm phần tử trong mảng trả về Phương thức 1 chấp nhận hai đối số được đặt tên. một hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27 và một đối tượng tùy chọn Giống như các phương thức lặp khác của đối tượng Array, chẳng hạn như // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...42 // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...43 // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...44 và // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...45, hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27 có dạng sau const employees = [ { name: 'John', department: 'sales' }, { name: 'Wayne', department: 'marketing' }, { name: 'David', department: 'IT' }, { name: 'Bruce', department: 'marketing' }, ]; const match = []; for (let i = 0; i < employees.length; i++) { if (employees[i].department === 'marketing') { match.push(employees[i]); } } console.log(match); /* [ {name: "Wayne", department: "marketing"}, {name: "Bruce", department: "marketing"} ] */7 Hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27 nhận ba đối số
Các đối số // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...10 và // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...13 là tùy chọn Đối số // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...16 của phương thức 1 là tùy chọn. Nếu bạn chuyển giá trị // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...18, bạn có thể tham chiếu giá trị đó bằng cách sử dụng từ khóa // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...18 bên trong hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...27 Điều quan trọng cần lưu ý là phương thức 1 không thay đổi mảng ban đầu Thêm các ví dụ về phương thức Mảng JavaScript let bigCities = []; for (let i = 0; i < cities.length; i++) { if (cities[i].population > 3000000) { bigCities.push(cities[i]); } } console.log(bigCities);Code language: JavaScript (javascript)1Vì phương thức 1 trả về một mảng mới, nên bạn có thể xâu chuỗi kết quả bằng các phương thức mảng khác, chẳng hạn như // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...34 và // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...35 Ví dụ: phần sau minh họa cách xâu chuỗi ba phương thức. // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...36 và // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...37 9 đầu ra 0 Làm thế nào nó hoạt động
Ví dụ sau minh họa việc sử dụng đối số const employees = [ { name: 'John', department: 'sales' }, { name: 'Wayne', department: 'marketing' }, { name: 'David', department: 'IT' }, { name: 'Bruce', department: 'marketing' }, ]; const match = []; for (let i = 0; i < employees.length; i++) { if (employees[i].department === 'marketing') { match.push(employees[i]); } } console.log(match); /* [ {name: "Wayne", department: "marketing"}, {name: "Bruce", department: "marketing"} ] */71 chỉ định một đối tượng có thể được tham chiếu trong hàm // ES6+ // ... const filtered = employees.filter((emp) => emp.department === 'marketing'); // ...25 bằng cách sử dụng từ khóa // ES6+ // ... const filtered = employees.filter(({ department }) => department === 'marketing'); // ...18 7 đầu ra 0 Làm thế nào nó hoạt động
Trong hướng dẫn này, bạn đã học cách sử dụng phương thức Array 1 của JavaScript để lọc các phần tử trong một mảng dựa trên phép thử được cung cấp bởi hàm gọi lại Làm cách nào để tìm một đối tượng theo giá trị thuộc tính trong một mảng các đối tượng JavaScript?Trả lời. Sử dụng phương thức find()
. Phương thức find() trả về phần tử đầu tiên trong mảng đã cho thỏa mãn chức năng kiểm tra được cung cấp. Nếu không có giá trị nào thỏa mãn chức năng kiểm tra, undefined được trả về.
Cách lấy giá trị cụ thể từ mảng trong JavaScript?Nếu bạn cần chỉ mục của phần tử được tìm thấy trong mảng, hãy sử dụng find Index() Nếu bạn cần tìm chỉ mục của một giá trị, hãy sử dụng indexOf(). . Nếu bạn cần tìm xem một giá trị có tồn tại trong một mảng hay không, hãy sử dụng bao gồm(). . Nếu bạn cần tìm xem có phần tử nào thỏa mãn chức năng kiểm tra được cung cấp hay không, hãy sử dụng some() |