2011-11-11 54 views
0

根據鍵值過濾JavaScript對象數組的最有效方法是什麼?JSON按值獲取項目

例如:我想以下數組中選擇由顏色項目:

[{ID:1,顏色: 「藍」},{ID:2,顏色: 「綠色」}, {Id:3,顏色:「藍色」},{Id:4,顏色:「紅色」}]

有一種簡單的語法,用CSS或xslt等語言選擇屬性,但找不到相當於JSON。

回答

4

您無法直接過濾JSON字符串 - 輕鬆,至少 - 不首先把它們解析到JavaScript對象:

var collection = JSON.parse(jsonString); 

但請注意,JSON解析器通常是嚴格 - 對象鍵必須是字符串(http://json.org):

[{ "Id": 1, "color": "blue" }, { "Id": 2, "color": "green" }, ...] 

之後,您可以使用返回Arrayfilter

var filtered = collection.filter(function (item) { 
    return item.color === "blue"; 
}); 

console.log(filtered[0]); // [Object] :: { Id: 1, color: "blue" } 

要支持較舊的瀏覽器,請包括json2.jsJSON.parse以及由MDN爲filter(或使用ES5-shim收集此類定義)提供的「兼容性」代碼。

+0

對不起,您說的「MDN提供的兼容性代碼」是什麼意思? – Christophe

+1

@Christophe對不起。我指的是[「兼容性」標題下列出的代碼(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter#Compatibility))。 –

0

JSON不是一種語言。我假設你的意思是JavaScript。你必須自己寫,沒有內置的方式。