8

我有一个像这样的简单对象:

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');.

4

3 回答 3

15

那可能是delete

delete obj['option1'];

小提琴

要按价值做到这一点,您可以执行以下操作:

function deleteByVal(val) {
    for (var key in obj) {
        if (obj[key] == val) delete obj[key];
    }
}

deleteByVal('item1');

小提琴

于 2013-06-16T14:38:16.497 回答
1

这个问题已得到正确回答,但我只想补充一件事:

您应该为此解决方案编写一个纯函数。这是一个不需要在全局范围内定义您的对象的函数。

所以:

const deleteObjectItemByValue = (Obj, val) => {
    for (var key in Obj) {
        if (Obj[key] == val) {
            delete Obj[key];
            return Obj;
        }
    }
};

用法:deleteObjectItemByValue(yourObj, val); 这是一个纯函数,没有副作用,即在其外部环境中改变任何东西,并且不依赖于任何全局变量的操作。

于 2020-03-17T10:37:12.873 回答
-1

像这样-

delete obj["option1"];或者delete obj.option1;

于 2013-06-16T14:38:35.523 回答