根據鍵值過濾JavaScript對象數組的最有效方法是什麼?JSON按值獲取項目
例如:我想以下數組中選擇由顏色項目:
[{ID:1,顏色: 「藍」},{ID:2,顏色: 「綠色」}, {Id:3,顏色:「藍色」},{Id:4,顏色:「紅色」}]
有一種簡單的語法,用CSS或xslt等語言選擇屬性,但找不到相當於JSON。
根據鍵值過濾JavaScript對象數組的最有效方法是什麼?JSON按值獲取項目
例如:我想以下數組中選擇由顏色項目:
[{ID:1,顏色: 「藍」},{ID:2,顏色: 「綠色」}, {Id:3,顏色:「藍色」},{Id:4,顏色:「紅色」}]
有一種簡單的語法,用CSS或xslt等語言選擇屬性,但找不到相當於JSON。
您無法直接過濾JSON字符串 - 輕鬆,至少 - 不首先把它們解析到JavaScript對象:
var collection = JSON.parse(jsonString);
但請注意,JSON解析器通常是嚴格 - 對象鍵必須是字符串(http://json.org):
[{ "Id": 1, "color": "blue" }, { "Id": 2, "color": "green" }, ...]
之後,您可以使用返回Array
filter
:
var filtered = collection.filter(function (item) {
return item.color === "blue";
});
console.log(filtered[0]); // [Object] :: { Id: 1, color: "blue" }
要支持較舊的瀏覽器,請包括json2.js的JSON.parse
以及由MDN爲filter
(或使用ES5-shim收集此類定義)提供的「兼容性」代碼。
JSON不是一種語言。我假設你的意思是JavaScript。你必須自己寫,沒有內置的方式。
對不起,您說的「MDN提供的兼容性代碼」是什麼意思? – Christophe
@Christophe對不起。我指的是[「兼容性」標題下列出的代碼(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter#Compatibility))。 –