根据键值过滤JavaScript对象数组的最有效方法是什么?
例如:我想在以下数组中按颜色选择项目:
[{Id:1,颜色:“蓝色”},{Id:2,颜色:“绿色”},{Id:3,颜色:“蓝色”},{Id:4,颜色:“红色” }]
有一种简单的语法可以在CSS或xslt等语言中按属性选择项目,但我找不到JSON的等价物。
答案 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。你必须自己写,没有内置的方式。