Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于键值对选择json对象_Javascript_Json_Select_E4x - Fatal编程技术网

Javascript 基于键值对选择json对象

Javascript 基于键值对选择json对象,javascript,json,select,e4x,Javascript,Json,Select,E4x,这可能是一个noob问题,但我想知道是否有一种方法可以选择json对象而不必循环遍历键值对。我在e4x上也做过类似的事情,但我不确定如何在语法上为js做到这一点。比如说 var data = { "objects":[ {"foo":"x","bar":"a"}, {"foo":"y","bar":"b"} ]} 因此,与其使用for循环,不如使用某种方法来声明 var someObject =

这可能是一个noob问题,但我想知道是否有一种方法可以选择json对象而不必循环遍历键值对。我在e4x上也做过类似的事情,但我不确定如何在语法上为js做到这一点。比如说

 var data =   { "objects":[
                {"foo":"x","bar":"a"},
                {"foo":"y","bar":"b"}
              ]}
因此,与其使用for循环,不如使用某种方法来声明

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

您可以手动执行此操作,而不必对数据进行迭代,但有些代码无论如何都应该对对象进行迭代(因此,在相当大的对象上不需要闪电般的速度)


这方面有一个图书馆:

这个问题是两年前提出的。jsonQ允许我们编写代码来查找兄弟节点、遍历树等,而无需在循环中编写一堆循环。虽然这个问题想在原生JS中找到它,但我认为我2岁的问题现在有点幼稚。我真的在寻找一个像jsonQ这样的库,以避免编写一堆难看的循环(尽管我可以自己完成这项工作)

我正在搜索,刚找到这个:。我还没有试过,但这似乎是一个不错的选择。

这个问题已经很老了,但这个答案可能会对某人有所帮助

要从列表中选择项目,可以使用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;
    }
}

这不是JSON,这是对象文字符号。你错了。JSON是对象文字表示法的一个子集,实际上要求值对中的标识符只能是字符串。我不喜欢依赖图书馆。不可能,嗯?我猜我在循环。那就自己写吧。没什么特别的。啊,您可以从这里获取
查找: