2015-06-23 14 views
7

Tôi có một mảng các đối tượng như thế này:Jquery lọc mảng các đối tượng với vòng lặp

myArray = [ 
{label: "a", 
value: "100"}, 
{label: "b", 
value: "101"}, 
{label: "c", 
value: "102"} 
... 

Tôi muốn lọc nó như thế này:

myArrayFiltered = myArray.filter(function(v){ 
    return v["value"] == "101" || v["value"] == "102"}); 

nào sẽ trở lại

myArrayFiltered = [ 
{label: "b", 
value: "101"}, 
{label: "c", 
value: "102"}] 

trong ví dụ này nhưng tôi muốn làm bộ lọc với một mảng các giá trị. Làm thế nào tôi có thể làm điều đó ?

Trả lời

5

Chỉ cần kiểm tra nếu giá trị mà bạn đang lọc trên là trong mảng của bạn

myArrayFiltered = myArray.filter(function(v){ 
    return ["102", "103"].indexOf(v.value) > -1; 
}); 
+0

Cái này hoạt động. Đừng quên thêm); cuối cùng. Trong thực tế, tôi đã không sử dụng một mảng để lọc nhưng một mảng các đối tượng như mảng đầu tiên. Tôi đã chuyển đổi nó thành một mảng để chỉ nhận các giá trị và sau đó sử dụng giải pháp này. – GtAntoine

+0

@GtAntoine Rất tiếc! Cảm ơn –

0

Bạn có thể sử dụng phương pháp .some bên trong bộ lọc của bạn:

var requiredValues = ["101", "102", "103"]; 
myArrayFiltered = myArray.filter(function(v){ 
    return requiredValues.some(function(value) { 
     return value === v.value; 
    }); 
}); 
+0

Bạn có thể vượt qua 'requiredValues' làm tham số thứ hai thành '.filter (callback [, thisArg])' và sau đó sử dụng 'this.indexOf()'. Sau đó, bạn sẽ không phải dựa vào tham số "toàn cầu" - [Array.prototype.filter()] (https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) – Andreas

+0

@Andreas Chắc chắn có thể. Tôi thích cách tiếp cận này, vì nó cảm thấy không tự nhiên để truyền vào một biến và chuyển nó thành * context *, vì vậy tôi sẽ để nguyên trạng thái này. – CodingIntrigue

0
var arrValues = ["101", "102"]; 



var result = getData(arrValues,"102") 



function getData(src, filter) { 
     var result = jQuery.grep(src, function (a) { return a == filter; }); 
     return result; 
    } 
Các vấn đề liên quan