从对象中删除值的属性

时间:2013-06-16 14:35:47

标签: 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

是否有一个函数可以帮助我从对象中删除属性,该属性作为参数接收键值对的值?

例如removeItem('item3');

3 个答案:

答案 0 :(得分:12)

那可能是delete

delete obj['option1'];

FIDDLE

按价值来做,你可以这样做:

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

deleteByVal('item1');

FIDDLE

答案 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); 这是一个纯函数,没有副作用,即在其外部环境中进行任何更改,并且不依赖任何全局变量进行操作。