[英]How to remove a property from an object?
目前, checkboxes
上設置了一個事件, event.target
為我提供了單擊復選框的status (checked = true/false)
。
我正在維護一個對象,該對象將軌道保留在所有選中的復選框上
var selectedMap = {};
if(event.target == true){
var key = event.target.id;
var val = event.target.name;
selectedMap[key] = val;
}
我想從地圖中刪除未選中的元素
else if(event.target == false){
selectedMap.remove(event.target.id);
}
當我運行它時它在Firebug
給我錯誤: selectedMap.remove is not a function
所以我的問題是當取消選中復選框時如何刪除元素?
使用delete
:
delete selectedMap[event.target.id];
但是,您正在設置錯誤的值。 這是正確的方法:
if(event.target == true){
var key = event.target.id; // <== No quotes
var val = event.target.name; // <== Here either
selectedMap[key] = val;
}
事實上,你可以:
if(event.target == true){
selectedMap[event.target.id] = event.target.name;
}
將事件目標放在一邊,用簡單的字符串來設想它更容易:
var obj = {};
obj.foo = "value of foo";
alert(obj.foo); // alerts "value of foo" without the quotes
alert(obj["foo"]); // ALSO alerts "value of foo" without the quotes, dotted notation with a literal and bracketed notation with a string are equivalent
delete obj.foo; // Deletes the `foo` property from the object entirely
delete obj["foo"]; // Also deletes the `foo` property from the object entirely
var x = "foo";
delete obj[x]; // ALSO deeltes the `foo` property
當使用像這樣的普通對象時,我總是在我的鍵上使用前綴來避免問題。 (例如,如果您的目標元素的ID是“toString”會發生什么?該對象已經有一個名為“toString”的[inherited]屬性,並且很快就會變得非常怪異。)
所以對我來說,我這樣做:
if(event.target == true){
selectedMap["prefix" + event.target.id] = event.target.name;
}
...而且當然:
delete selectedMap["prefix" + event.target.id];
你擁有的是一個對象而不是一個數組(盡管數組是一個對象)。 使用{}
聲明對象文字,而使用[]
聲明數組文字。
您可以使用delete
刪除對象屬性,如此
delete selectedMap[event.target.id];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.