簡體   English   中英

從對象中按值刪除屬性

[英]Remove property by value from object

我有一個像這樣的簡單對象:

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

那可能是delete

delete obj['option1'];

小提琴

要按價值執行此操作,您可以執行以下操作:

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

deleteByVal('item1');

小提琴

這個問題已得到正確回答,但我只想補充一件事:

您應該為此解決方案編寫一個純函數。 這是一個不需要在全局范圍內定義對象的函數。

所以:

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

用法: deleteObjectItemByValue(yourObj, val); 這是一個純函數,沒有副作用,即改變其外部環境中的任何內容,並且其操作不依賴於任何全局變量。

像這樣-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM