我有一个像这样的简单对象:
var obj = {
"option1": "item1",
"option2": "item2",
"option3": "item3"
};
为了向对象添加新属性,我使用以下代码:
obj[this.value] = this.innerHTML;
// this.innerHTML is used just because I'm adding the value I get from a DOM element
是否有一个函数可以帮助我从对象中删除属性,该属性作为参数接收键值对的值?
例如removeItem('item3');
。
答案 0 :(得分:12)
那可能是delete
:
delete obj['option1'];
按价值来做,你可以这样做:
function deleteByVal(val) {
for (var key in obj) {
if (obj[key] == val) delete obj[key];
}
}
deleteByVal('item1');
答案 1 :(得分:0)
喜欢这个 -
delete obj["option1"];
或delete obj.option1;
答案 2 :(得分:0)
这个问题已经正确回答,但是我只想添加一件事:
您应该为此解决方案编写一个纯函数。该函数不需要在全局范围内定义对象。
如此:
const deleteObjectItemByValue = (Obj, val) => {
for (var key in Obj) {
if (Obj[key] == val) {
delete Obj[key];
return Obj;
}
}
};
用法:deleteObjectItemByValue(yourObj, val);
这是一个纯函数,没有副作用,即在其外部环境中进行任何更改,并且不依赖任何全局变量进行操作。