Как узнать, содержит ли большой объект 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 идентификатор?
Ответы
Ответ 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")
. Это действительно работает.