Выберите объект json на основе пары ключ-значение - PullRequest
2 голосов
/ 06 марта 2012

Это может быть нубский вопрос, но мне интересно, есть ли способ выбрать объект json без необходимости перебирать пары ключ-значение. Я делал подобные вещи с e4x, но я не уверен, как это сделать синтаксически для js. Например

 var data =   { "objects":[
                {"foo":"x","bar":"a"},
                {"foo":"y","bar":"b"}
              ]}

Так что вместо цикла for можно объявить

 var someObject = data.objects[where objects.foo == x]

Ответы [ 4 ]

3 голосов
/ 06 марта 2012

Вы можете сделать это без вручную итерации по данным, но некоторый код все равно должен итерировать по объекту (поэтому не следует ожидать молниеносной скорости на довольно больших объектах).

Естьбиблиотека для этого: jsonpath

0 голосов
/ 24 июня 2017

Вопрос старый, но может этот ответ кому-нибудь поможет.

Чтобы выбрать элемент из списка, вы можете использовать функцию Javascript filter :

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;
    }
}
0 голосов
/ 06 ноября 2015

Я искал и только что нашел: https://github.com/lloyd/JSONSelect. Я еще не пробовал, но, похоже, это хороший выбор.

0 голосов
/ 26 февраля 2015

Этот вопрос был задан два года назад до jsonQ .jsonQ позволяет нам писать код для поиска братьев и сестер, обхода деревьев и т. д. без необходимости писать кучу циклов внутри циклов.Хотя вопрос хотел найти его в нативном JS, я думаю, что мой двухлетний вопрос сейчас немного наивен.Я действительно искал библиотеку, такую ​​как jsonQ, чтобы не писать кучу уродливых циклов (хотя я мог бы сделать эту работу сам).

...