根据键值过滤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))。 –