根据键值对选择json对象

时间:2012-03-06 19:25:44

标签: javascript json select e4x

这可能是一个noob问题,但我想知道是否有办法选择一个json对象而不必循环键值对。我用e4x完成了类似的事情,但我不确定如何在语法上为js做。例如

 var data =   { "objects":[
                {"foo":"x","bar":"a"},
                {"foo":"y","bar":"b"}
              ]}

因此,而不是for循环,某种方式来声明

 var someObject = data.objects[where objects.foo == x]

4 个答案:

答案 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;
    }
}