这可能是一个noob问题,但我想知道是否有办法选择一个json对象而不必循环键值对。我用e4x完成了类似的事情,但我不确定如何在语法上为js做。例如
var data = { "objects":[
{"foo":"x","bar":"a"},
{"foo":"y","bar":"b"}
]}
因此,而不是for循环,某种方式来声明
var someObject = data.objects[where objects.foo == x]
答案 0 :(得分:3)
你可以用手动迭代数据,但是有些代码应该遍历对象(所以不要指望相当大的对象闪电般的速度)。
有一个库:jsonpath
答案 1 :(得分:0)
这个问题是在两年前jsonQ之前提出的。 jsonQ允许我们编写代码来查找兄弟,遍历树等,而不必在循环内编写一堆循环。虽然这个问题想要一种在原生JS中找到它的方法,但我认为我2岁的问题现在有点天真。我真的在寻找像jsonQ这样的库来避免编写一堆丑陋的循环(虽然我可以自己完成这项工作)。
答案 2 :(得分:0)
我正在搜索并找到了这个:here。我还没有尝试过,但它似乎是一个不错的选择。
答案 3 :(得分:0)
问题是陈旧的,但这个答案可能对某人有所帮助。
要从列表中选择项目,您可以使用Javascript 过滤器功能:
var data = { "objects":[
{"foo":"x","bar":"a"},
{"foo":"y","bar":"b"}
]}
var someobject = filterObject('x');
function filterObject(fooValue) {
return data.objects.filter(function(item) {
return item.foo == fooValue;
}
}