I'm using PHP to json encode a massive multi-dimensional array of events, so i get something like this:
var ents = {"7":{"event_id":"7","nn":"The Whisky Drifters","nn_url":"the-whisky-drifters",
"venue":"The Grain Barge","date_num":"2010-06-11"开发者_JS百科,"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},
the first dimension is the id, see
var ents = {"7":{
So it's possible to get the ids without examining the nested objects...
What's the fastest, most efficient way to check if my JSON contains an id?
You can use the hasOwnProperty
method:
if (ents.hasOwnProperty('7')) {
//..
}
This method checks if the object contains the specified property regardless of its value.
Is faster than the in
operator because it doesn't checks for inherited properties.
Additionally to what CMS said: If you need all properties, you can loop over the porperties with 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
}
Also that isn't a "multi-dimensional array". It's an object (with more nested objects).
yes it is possible but you have to loop through complete json object on client side.
var JSONobj = ents, yourid;
for(key in JSONobj)
{
if(((typeof key) == 'number') && key==yourid )
alert(key);
}
if you are using jQuery then you can use $.each method to fetchng keys from jsonObject
var JSONobj = ents, yourid;
$.each(JSONobj, function(key, value){
if(((typeof key) == 'number') && key==yourid )
alert(key);
//ids.push(key);
});
Just use myObject.has("keyName")
. This is what really works.
精彩评论