12/08/2018, 18:12
Lọc những bản ghi có giá trị nhất định trong mảng với Filter trong JS
Có bao giờ bạn phải lọc những bản ghi mà có một field bất kỳ được chỉ định giá trị nào đó. Ví dụ bạn có mảng object gồm các sinh viên: var data = { "class" : { "students" : [ { "id" : "S01" , "name" : "Ly Nhan Tong" , ...
Có bao giờ bạn phải lọc những bản ghi mà có một field bất kỳ được chỉ định giá trị nào đó. Ví dụ bạn có mảng object gồm các sinh viên:
var data = { "class" : { "students" : [ { "id" : "S01", "name" : "Ly Nhan Tong", "age" : 20, "phone" : 0969692268, "gender" : "Male", "address" : "Ha Noi" }, { "id" : "S02", "name" : "Le Anh Phuong", "age" : 19, "phone" : 0969692268, "gender" : "Female", "address" : "Ha Nam" }, { "id" : "S03", "name" : "Le Hoan", "age" : 20, "phone" : 0969692268, "gender" : "Male", "address" : "Ha Tay" } ] } }
Bài toán là cần lấy những bản ghi có “gender” = “Male”. Có thể bạn sẽ nghĩ đến vòng for, duyệt đến bản ghi nào có “gender” = “Male” bạn sẽ thêm vào một mảng mới.
var newArray= []; for(var i = 0; i < data.class.students.length; i++){ if(data.class.students[i][“gender”] === ‘Male’){ newArray.push(data.class.students[i]); } }
Còn với Filter Cũng xử lý như trên nhưng với Filter mọi thứ đơn giản hơn dễ hiểu hơn rất nhiều
var result = data.class.students.filter(function( obj ) { return obj.gender == "Male"; });
Kết quả:
[ { "id": "S01", "name": "Ly Nhan Tong", "age": 20, "phone": 969692268, "gender": "Male", "address": "Ha Noi" }, { "id": "S03", "name": "Le Hoan", "age": 20, "phone": 969692268, "gender": "Male", "address": "Ha Tay" } ]
Demo JsFiddle :