2011-11-11 48 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。你必须自己写,没有内置的方式。