Hướng dẫn javascript foreach filter - bộ lọc foreach javascript
Trong bài này chúng ta sẽ tìm hiểu hàm filter trong javascript, đây là hàm dùng để lặp qua các phần tử trong mảng, dùng để lọc các phần tử trong mảng theo một điều kiện nào đó. Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức. Hàm filter được tích hơp sẵn trong đối tượng mảng giống như hàm map trong javascript. Về cách thức hoạt động thì nó giống hàm map, nghĩa là nó sẽ có một tham số dạng function và function này sẽ xử lý cho mỗi lần lặp. Nếu function return true thì phần tử lần lặp đó được chấp nhận, ngược lại sẽ không được chấp nhận.filter được tích hơp sẵn trong đối tượng mảng giống như hàm map trong javascript. Về cách thức hoạt động thì nó giống hàm map, nghĩa là nó sẽ có một tham số dạng function và function này sẽ xử lý cho mỗi lần lặp. Nếu function return true thì phần tử lần lặp đó được chấp nhận, ngược lại sẽ không được chấp nhận. 1. Filter trong javascript là gì?Filter trong Javascript là một phương thức thuộc đối tượng mảng. Nó có công dụng đúng ý nghĩa với tên gọi của nó, tức là sẽ lặp qua qua các phần tử, sau đó tùy vào từng bài toán mà sẽ quyết định chọn phần tử đó hay không. Cuối cùng hàm này sẽ trả về một mảng các phần tử đã chọn. Cú pháp của filter trong js như sau: Bài viết này được đăng tại [free tuts .net] objectArray.filter(function(value){ return true / false; }); Nếu var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5005 thì phẩn tử được chọn, ngược lại var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5006 thì phần tử không được chọn. Còn var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5007 chính là giá trị của mỗi phần tử trong mỗi lần lặp. Ví dụ 1: Dùng dụng hàm filter với lệnh return true.: Dùng dụng hàm filter với lệnh return true. var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 500 Như bạn thấy, mảng mới có tổng số phần tử và giá trị của chúng không khác gì mảng cũ. Ví dụ 2: Dùng hàm filter với lệnh return false.: Dùng hàm filter với lệnh return false. var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return false; }); console.log(selected_number); // Rỗng Kết quả trả về một mảng không có phần tử nào, lý do là ta đã return false cho mọi tường hợp.return false cho mọi tường hợp. Ví dụ 3: Tạo mảng mới từ mnagr numbers và bỏ đi phần tử 300.: Tạo mảng mới từ mnagr numbers và bỏ đi phần tử 300. var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ if (value == 300){ return false; } return true; }); console.log(selected_number); // 100, 200, 400, 500 Kết quả là phần tử có giá trị 300 đã biến mất. 2. Ví dụ hàm filter trong javascriptTa sẽ làm thêm một ví dụ nữa để giúp các bạn dễ hình dung hơn nhé. Ví dụ: Lấy các phần tử chẵn trong mảng cho trước. Với bài này thì ta có hai cách, thứ nhất là sử dụng hàm filter, và thứ hai là sử dụng vòng lặp for. Cách 1: Sử dụng hàm filter var numbers = [5, 10, 20, 22, 60, 75, 90]; var new_numbers = numbers.filter(function(item){ return (item % 2 == 0); }); console.log(new_numbers); // Kết quả: [10, 20, 22, 60, 90] Cách 2: Sử dụng vòng lặp for Một cách giải khác sử dụng vòng lặp for. var numbers = [5, 10, 20, 22, 60, 75, 90]; var new_numbers = []; for (var i = 0; i < numbers.length; i++){ if (numbers[i] % 2 == 0){ new_numbers.push(numbers[i]); } } console.log(new_numbers); // Kết quả: [10, 20, 22, 60, 90] 3. Lời kếtNhư vậy là mình đã hướng dẫn xong cách sử dụng vòng lặp foreach trong Javascript. Lưu ý là hàm này ta chỉ có thể sử dụng với mảng thôi nhé. Nếu bạn muốn sử dụng với đối tượng object thì tham khảo vòng lặp forEach nhé. Kết lại thì mình sẽ đưa ra các điều kiện để chọn method phù hợp từng bài toán như sau: var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return false; }); console.log(selected_number); // Rỗng0: không thay đổi length; thay đổi value mỗi phần tử; call back function trả về phần tử mới. .mapMục đích:var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return false; }); console.log(selected_number); // Rỗng1: thay đổi length; không thay đổi value mỗi phần tử; call back function trả về giá trị var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ if (value == 300){ return false; } return true; }); console.log(selected_number); // 100, 200, 400, 5002. Điểm lưu ý:
Example:Example 2: biến đổi thành một object mới.filterMục đích:Example 3: biến đổi thành một string mới Điểm lưu ý:
Example:
.reduceMục đích:Trả về một var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ if (value == 300){ return false; } return true; }); console.log(selected_number); // 100, 200, 400, 5004 mới với kết quả: là sau khi lặp qua và thực hiện thao tác tính toán trên mỗi lần lặp. Điểm lưu ý:
Example 1: biến đổi thành một array mới
Example 2: biến đổi thành một object mới
Example 3: biến đổi thành một string mớivar numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5000 .forEachMục đích:Dùng để lặp qua các phần tử của một var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return false; }); console.log(selected_number); // Rỗng4 và thực hiện thao tác xử lý qua mỗi lần lặp (tương tự vòng lặp var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ if (value == 300){ return false; } return true; }); console.log(selected_number); // 100, 200, 400, 5009). Điểm lưu ý:
Example:var numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5001 Example 1: biến đổi thành một array mớiExample 2: biến đổi thành một object mới Example 3: biến đổi thành một string mớivar numbers = [100, 200, 300, 400, 500]; var selected_number = numbers.filter(function(value){ return true; }); console.log(selected_number);// 100, 200, 300, 400, 5002 Dùng để lặp qua các phần tử của một |