Tôi gặp sự cố khi xóa this
(một sự kiện 'cụ thể') từ đối tượng javascript sau, khi this
là từ vòng lặp jquery .each()
.Xóa điều này khỏi một đối tượng javascript trong jQuery .each()
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"
}
}
}
Đây là một phiên bản teo của .each()
loop:
$.each(weatherData.events, function(i){
if(this.type == "One Time"){
delete weatherData.events[this];
}
})
Bạn có thể tốt hơn chỉ đơn giản là đổ weatherData.events (weatherData.events = {}), chứ không phải cố gắng để xóa nó. Theo một trong những tác giả của v8 trong một cuộc phỏng vấn tôi đã nghe gần đây, khi bạn xóa một thành viên của đối tượng, đối tượng được chuyển đổi thành băm, sau đó trở lại một đối tượng, trong khi gán lại trong một đối tượng không có đối tượng-> băm -> đối tượng thực hiện hình phạt. – BrianFreud
Điều đó nghe như lời khuyên tốt. Tôi sẽ làm điều đó nếu tôi không cố gắng tiết kiệm một số nội dung. Tôi chỉ xóa một số sự kiện nhất định chứ không phải tất cả các sự kiện. Tôi sẽ cập nhật bài đăng của mình để cụ thể hơn trong phần mô tả mở đầu. – fishpen0