2011-10-30 52 views
0
[ 
{"id":1,"id_parent":7,"name":"sub category of cat 7-1"}, 
{"id":2,"id_parent":7,"name":"sub category of cat 7-2"}, 
{"id":3,"id_parent":8,"name":"sub category of cat 8-1"}, 
{"id":4,"id_parent":8,"name":"sub category of cat 8-2"} 
] 

我想在一個更大的組中找到一組對象。例如,只需獲取id_parent = 7的對象。現在我使用for循環來做到這一點,但我不知道有什麼替代解決方案來做到這一點。謝謝在JSON中查找一組對象

回答

1

如果你的瀏覽器有Array.filter,你可以這樣做:

var children_of_7 = data.filter(function(item) { 
    return item.id_parent === 7; 
}); 

如果你的瀏覽器不具有它本身,你可以shim it

0

不,沒有。你所能做的就是循環你的JSON。

+0

注意自我:請下一個面試的候選人做這個沒有for循環。 – Triptych

1

如果您有提供的ECMAScript第5版實現,比你的瀏覽器的確可以這樣做:

var filteredResults = data.filter(function(item) { 
    return item.id_parent === 7; 
}); 

,否則你的好ole環是解決方案:

var filteredResults = []; 
for (var i = 0, l = data.length; i < l; i++) { 
    if (data[i].id_parent === 7) { 
    filteredResults.push(data[i]); 
    } 
} 

但是,請記住,至少AFAIK,filter有性能損失。

我已經調整了一些快速測試的參考 - 可以看到here

並且差別很大。