2011-09-21 19 views
10

Mam obiekt JSON, który idzie tak:Jak filtrować Multi-wymiarowy obiekt JSON z jQuery.grep()

{"data": 
[ 
    {"name":"Alan","height":"171","weight":"66"}, 
    {"name":"Ben","height":"182","weight":"90"}, 
    {"name":"Chris","height":"163","weight":"71"} 
] 
,"school":"Dover Secondary" 
} 

chciałbym filtrować obiekt JSON, aby uzyskać dane te wyższe niż 170 i cięższych niż 70, a następnie posortuj ten obiekt. Z jQuery website, rozumiem, że filtrowanie będzie łatwo osiągnąć w układzie liniowym z czymś takim:

arr = jQuery.grep(arr, function(element, index){ 
    return (element > 70 && index = 'weight'); 
}); 

Jak można filtrować zarówno wagę i wzrost równocześnie, aby uzyskać w ten sposób:

{"data": 
[ 
    {"name":"Ben","height":"182","weight":"90"}, 
] 
,"school":"Dover Secondary" 
} 
+0

To nie moja waga i wysokość! –

Odpowiedz

21

Chyba oznacza to: http://jsfiddle.net/NRuM7/1/.

var obj = {"data": 
[ 
    {"name":"Alan","height":"171","weight":"66"}, 
    {"name":"Ben","height":"182","weight":"90"}, 
    {"name":"Chris","height":"163","weight":"71"} 
] 
,"school":"Dover Secondary" 
}; 

obj.data = jQuery.grep(obj.data, function(element, index){ 
    return element.weight > 70 && element.height > 170; // retain appropriate elements 
}); 
+0

Err .. Chcę odfiltrować zarówno wagę, jak i wysokość. Czy można to zrobić? –

+0

@Ben: Przepraszam, zobacz moją edycję proszę. – pimvdb

+0

Tak, masz rację. Dzięki ;) –