Использование JQuery для управления объектом JSON - PullRequest
0 голосов
/ 08 апреля 2011

Можем ли мы использовать функции JQuery для манипулирования и поиска в JSON Object?Например, если у меня есть большой объект типа массива этого объекта:

Node 
{
    Name,
    Property1,
    Property2
}

могу ли я использовать функцию поиска jquery, чтобы найти узел со свойством Name как John?и аналогичным образом изменить содержимое ??

изменить: да, я на самом деле искал что-то вроде JLinq, спасибо

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

Чтобы найти этот узел, вы должны выполнить цикл таким образом ...

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

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

});

Это O (n).

3 голосов
/ 08 апреля 2011

Я думаю, что вы ищете здесь, jLinq.это как linq, но это плагин jquery.сделать то, о чем вы спрашиваете, действительно легко.это будет что-то вроде:

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

, если вы хотите только первую попытку матча:

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

и это все, что нужно сделать.очень быстрый и эффективный, и очень семантический, поэтому легко понять смысл.

2 голосов
/ 08 апреля 2011

Нет, извините.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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...