I am having trouble deleting this
(a specific 'event') from the following javascript object, when this
is from a jquery .each()
loop.
weatherData:
{
"events":{
"Birthday":{
"type":"Annual",
"date":"20120523",
"weatherType":"clouds",
"high":"40",
"low":"30",
"speed":"15",
"direction":"0",
"humidity":"0"
},
"Move Out Day":{
"type":"One Time",
"date":"20120601",
"weatherType":"storm",
"high":"80",
"low":"76",
"speed":"15",
"direction":"56",
"humidity":"100"
}
},
"dates":{
"default":{
"type":"clouds",
"high":"40",
"low":"30",
"speed":"15",
"direction":"0",
"humidity":"0"
},
"20120521":{
"type":"clear",
"high":"60",
"low":"55",
"speed":"10",
"direction":"56",
"humidity":"25"
}
}
}
This is a shrunken version of the .each()
loop:
$.each(weatherData.events, function(i){
if(this.type == "One Time"){
delete weatherData.events[this];
}
})
You're using an object where a string (the property name) is expected. I believe you want:
...because
$.each
will pass in the property name (e.g.,"Move Out Day"
) as the first argument to the iterator function, which you're accepting asi
. So to delete that property from the object, you use that name.Gratuitous live example | source
You need the name of the item, not a reference to it. Use the parameters in the callback function:
Ref: http://api.jquery.com/jQuery.each/