Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
使用JQuery操作JSON对象_Jquery_Json - Fatal编程技术网

使用JQuery操作JSON对象

使用JQuery操作JSON对象,jquery,json,Jquery,Json,我们可以使用JQuery函数来操作和搜索JSON对象吗? 比如,如果我有一个数组类型的大对象,这个对象: Node { Name, Property1, Property2 } 我可以使用jquery函数find来查找属性名为John的节点吗? 并且同样地修改内容 编辑:是的,我实际上是在寻找类似JLinq的东西, 谢谢不,对不起。jQuery用于处理DOM节点或XML结构。如果要搜索对象哈希,则需要手动执行。即使jQuery有方法来做这件事,它也不能像DOM搜索那样

我们可以使用JQuery函数来操作和搜索JSON对象吗? 比如,如果我有一个数组类型的大对象,这个对象:

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();