Подтвердить что ты не робот

Как узнать, содержит ли большой объект JSON значение?

Я использую PHP для json кодирования массивного многомерного массива событий, поэтому я получаю что-то вроде этого:

var ents = {"7":{"event_id":"7","nn":"The Whisky Drifters","nn_url":"the-whisky-drifters",
  "venue":"The Grain Barge","date_num":"2010-06-11","date_txt":"Friday 11th June",
  "gig_club":"1","sd":"A New Acoustic String Band...","ven_id":"44",
  "art":0},"15":{"event_id":"15","nn":"Bass Kitchen","nn_url":"bass-kitchen",
  "venue":"Timbuk2","date_num":"2010-06-11","date_txt":"Friday 11th June",
  "gig_club":"2","sd":"Hexadecimal \/ DJ Derek \/ Id","ven_id":"21",
  "art":1},

первое измерение - это id, см.

var ents = {"7":{

Таким образом, можно получить идентификаторы без изучения вложенных объектов...

Какой самый быстрый и эффективный способ проверить, содержит ли мой JSON идентификатор?

4b9b3361

Ответ 1

Вы можете использовать метод hasOwnProperty:

if (ents.hasOwnProperty('7')) {
  //..
}

Этот метод проверяет, содержит ли объект указанное свойство независимо от его значения.

Быстрее, чем оператор in, потому что он не проверяет наследуемые свойства.

Ответ 2

В дополнение к тому, что сказал CMS: если вам нужны все свойства, вы можете перебирать символы с помощью for ... in:

for (prop in ents) {
  alert(prop); // Shows "7", "15", etc.
  // Accessing the sub-object:
  alert(ents[prop].nn); // Shows the names of each event
}

Также это не "многомерный массив". Это объект (с большим количеством вложенных объектов).

Ответ 3

да, это возможно, но вам нужно пройти через полный json-объект на стороне клиента.

var JSONobj = ents, yourid;
for(key in JSONobj)
{
   if(((typeof key) == 'number') && key==yourid )
         alert(key);
}

если вы используете jQuery, тогда вы можете использовать метод $.each для fetchng-ключей из jsonObject

   var JSONobj = ents, yourid;
        $.each(JSONobj, function(key, value){     
             if(((typeof key) == 'number') && key==yourid )
                 alert(key);
           //ids.push(key);
        });

Ответ 4

Просто используйте myObject.has("keyName"). Это действительно работает.