根据键值对选择json对象
这可能是一个noob问题,但我想知道是否有一种方法可以选择json对象而不必循环键值对。我用e4x做了类似的事情,但我不确定如何为js在语法上做到这一点。例如根据键值对选择json对象
var data = { "objects":[
{"foo":"x","bar":"a"},
{"foo":"y","bar":"b"}
]}
所以不是一个for循环,一些方法来声明
var someObject = data.objects[where objects.foo == x]
你可以做到这一点W/O 手动叠代的数据,但有些代码应该遍历无论如何对象(所以不期望在相当大的物体上闪电般的速度)。
有一个库为:jsonpath
呃。我不喜欢图书馆。没有纯粹的方式,呃?猜猜我正在循环。 – FlavorScape 2012-03-07 16:27:44
然后自己写。没什么特别的。啊,你可以从这里找到'findBy':http://travian.kirilloid.ru/js/array.js – kirilloid 2012-03-07 18:58:54
看到jsonQ! https://github.com/s-yadav/jsonQ/ – FlavorScape 2015-02-25 21:32:26
这个问题在两年前有人问jsonQ之前。 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,这是反对的文字符号。 – 2012-03-06 19:32:09
你错了。 JSON是对象文字符号的一个子集,事实上要求值对中的标识符只是字符串。 – FlavorScape 2012-03-06 20:22:04