Javascript 从对象中按值删除属性
我有一个像这样的简单对象:Javascript 从对象中按值删除属性,javascript,Javascript,我有一个像这样的简单对象: 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 是否有一个函数可
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
是否有一个函数可以帮助我从对象中删除一个属性,该属性将键值对的值作为参数接收
例如
removietem('item3')代码>可能是删除
:
delete obj['option1'];
要按价值进行操作,您可以执行以下操作:
function deleteByVal(val) {
for (var key in obj) {
if (obj[key] == val) delete obj[key];
}
}
deleteByVal('item1');
像这样-
删除obj[“option1”]代码>或删除对象选项1代码>这个问题回答正确,但我只想补充一点:
您应该为此解决方案编写一个纯函数。这是一个不需要在全局范围内定义对象的函数
因此:
用法:deleteObjectItemByValue(yourObj,val)代码>
这是一个纯函数,没有副作用,即在外部环境中变异任何东西,并且不依赖于任何全局变量进行操作 内置的?我可以引用值而不是键吗?不是以本机方式,您必须编写自己的函数,遍历对象的所有属性以查找所需的值,然后删除属性(-ies)其值与您要查找的值匹配。我是否可以删除值等于item1的元素?@Joseph82请注意,上面的函数将删除具有相同值的多个属性。此外,它使用=
而不是==
松散地检查类型。这些都不是坏的或错误的,这取决于你想要什么/需要什么。我相信我的价值观是不同的。你误解了这个问题。该问题询问如何删除按值而不是按键选择的键/值对。请考虑删除或编辑您的答案。
const deleteObjectItemByValue = (Obj, val) => {
for (var key in Obj) {
if (Obj[key] == val) {
delete Obj[key];
return Obj;
}
}
};