使用JQuery操作JSON对象
我们可以使用JQuery函数来操作和搜索JSON对象吗? 比如,如果我有一个数组类型的大对象,这个对象:使用JQuery操作JSON对象,jquery,json,Jquery,Json,我们可以使用JQuery函数来操作和搜索JSON对象吗? 比如,如果我有一个数组类型的大对象,这个对象: Node { Name, Property1, Property2 } 我可以使用jquery函数find来查找属性名为John的节点吗? 并且同样地修改内容 编辑:是的,我实际上是在寻找类似JLinq的东西, 谢谢不,对不起。jQuery用于处理DOM节点或XML结构。如果要搜索对象哈希,则需要手动执行。即使jQuery有方法来做这件事,它也不能像DOM搜索那样
Node
{
Name,
Property1,
Property2
}
我可以使用jquery函数find来查找属性名为John的节点吗?
并且同样地修改内容
编辑:是的,我实际上是在寻找类似JLinq的东西,
谢谢不,对不起。jQuery用于处理DOM节点或XML结构。如果要搜索对象哈希,则需要手动执行。即使jQuery有方法来做这件事,它也不能像DOM搜索那样让事情变得更快——没有比递归搜索更快的方法了(除非你已经对它进行了预解析) OMFG人 听着,jQuery并不是一切JavaScript的最终救世主。有些事情只是在直JS更好!有什么可怕的地方:
for(var i=0, l=ary.length; i<l; i++){
if(ary[i].Name=='John'){
// do something
break;
}
}
高兴吗?它会慢一些,因为您有嵌套函数调用,它会慢一些,因为它将遍历每个元素,而不是停止
但它使用jQuery 要找到那个节点,你可以像这样循环
$.each(yourJson, function(i, node) {
if (node.Name == 'John') {
// Found it
return false;
}
});
这是O(n)。我想你在这里找的是jLinq。它类似于linq,但它是一个jquery插件。做你想做的事真的很容易。可能是这样的:
var matchingNodes = jlinq.from(data.Nodes).equals("Name", "John").select();
如果只需要第一个匹配项,请尝试:
var firstMatch = jlinq.from(data.Nodes).equals("Name", "John").first();
这就是一切。非常快速、高效、语义非常丰富,因此很容易维护和理解意图。您不需要插件即可做到这一点。看我修改过的答案。怪胎羊。@cwolfs,好斗吗?虽然我知道可以使用本机javascript解决方案,但jlinq实际上非常快速且可扩展。我只是在质疑jquery不能做到这一点。它可以,在插件的帮助下。如果您打算提交一个库,为什么不从编码效率中获益呢?
var firstMatch = jlinq.from(data.Nodes).equals("Name", "John").first();