2011-04-08 78 views
0

我们可以使用JQuery函数来操作和搜索JSON对象吗? 就像如果我有这种类型对象的数组中的一大目标:使用JQuery来操纵JSON对象

Node 
{ 
    Name, 
    Property1, 
    Property2 
} 

可以使用jQuery函数找到找到物业名称为约翰的节点? 并同样修改内容?

编辑:是的,我实际上是寻找类似JLINQ, 谢谢

回答

3

我想你在这里找的是jLinq。它像linq,但它是一个jQuery插件。做你所问的事情非常简单。它会是这样的:

var matchingNodes = jlinq.from(data.Nodes).equals("Name", "John").select(); 

,如果你只想要第一场比赛尝试:

var firstMatch = jlinq.from(data.Nodes).equals("Name", "John").first(); 

和那一切就是这么简单。非常快速和高效,而且语义非常,所以它容易保持理解的意图。

+1

你并不需要一个插件来做到这一点。看到我修改后的答案。 Freakin'羊。 – 2011-04-08 05:04:18

+2

@cvolves,积极多?虽然我明白可以使用原生的javascript解决方案,但jlinq实际上非常快速且可扩展。我只是在质疑jquery无法做到的事实。它可以在插件的帮助下完成。如果您要承诺图书馆,为什么不从编码效率中受益? – 2011-04-08 05:08:08

3

对不起,先生。 jQuery是用于处理DOM节点或XML结构的。如果你想搜索对象哈希,你需要手动完成。即使jQuery有办法做到这一点,但它没有任何“魔术”可以使事情变得更快,就像使用DOM搜索一样 - 只是没有更快的方法来搜索散列,而不是递归地进行搜索(除非你已经预先分析过)

OMFG PEOPLE !!

你看,jQuery并不是所有JavaScript的万能救星。有些东西在直线JS中更好!什么是如此可怕约:

for(var i=0, l=ary.length; i<l; i++){ 
    if(ary[i].Name=='John'){ 
     // do something 
     break; 
    } 
} 

你正在 “寻找” 的答案很简单:

$(ary).filter(function(){ return this.Name=='John'; }); 

快乐?它会变慢,因为你有嵌套的函数调用,它会变慢,因为它将遍历每个元素而不是停止。

但它使用jQuery。

3

为了找到节点,你会遍历像这样......

$.each(yourJson, function(i, node) { 

    if (node.Name == 'John') { 
     // Found it 
     return false; 
    } 

}); 

这是O(n)。