JSON按价值获取项目

时间:2011-11-11 00:05:32

标签: javascript json key-value

根据键值过滤JavaScript对象数组的最有效方法是什么?

例如:我想在以下数组中按颜色选择项目:

[{Id:1,颜色:“蓝色”},{Id:2,颜色:“绿色”},{Id:3,颜色:“蓝色”},{Id:4,颜色:“红色” }]

有一种简单的语法可以在CSS或xslt等语言中按属性选择项目,但我找不到JSON的等价物。

2 个答案:

答案 0 :(得分:5)

您无法直接过滤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" }

要支持旧版浏览器,请为JSON.parse添加json2.js以及MDN为filter提供的“兼容性”代码(或使用ES5-shim来收集此类浏览器定义)。

答案 1 :(得分:0)

JSON不是一种语言。我假设你的意思是javascript。你必须自己写,没有内置的方式。