我正在使用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":{
因此可以在不检查嵌套对象的情况下获取ID ...
检查我的JSON是否包含ID的最快,最有效的方法是什么?
答案 0 :(得分:45)
您可以使用hasOwnProperty
方法:
if (ents.hasOwnProperty('7')) {
//..
}
此方法检查对象是否包含指定的属性,无论其值如何。
比in
运算符更快,因为它不检查继承的属性。
答案 1 :(得分: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
}
这也不是“多维数组”。它是一个对象(具有更多嵌套对象)。
答案 2 :(得分:2)
是的,但是你必须在客户端循环完整的json对象。
var JSONobj = ents, yourid;
for(key in JSONobj)
{
if(((typeof key) == 'number') && key==yourid )
alert(key);
}
如果您使用的是jQuery,则可以使用$ .each方法从jsonObject中获取键
var JSONobj = ents, yourid;
$.each(JSONobj, function(key, value){
if(((typeof key) == 'number') && key==yourid )
alert(key);
//ids.push(key);
});
答案 3 :(得分:-1)
只需使用myObject.has("keyName")
即可。这才是真正有效的。