如何按值删除javascript对象项?

aml*_*e86 6 javascript object

例如,以下对象:

var fruits = {
    "red" : "apple",
    "blue" : "blueberry",
    "yellow" : "banana"
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用delete fruits["red"]键名删除它,但是如何通过水果名称删除对象项?

mdm*_*mdm 8

你尝试过这样的事吗?

function deleteByValue(val) {
    for(var f in fruits) {
        if(fruits[f] == val) {
            delete fruits[f];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据Rocket的评论,您可能需要检查hasOwnProperty以确保不删除对象原型的成员:

function deleteByValue(val) {
    for(var f in fruits) {
        if(fruits.hasOwnProperty(f) && fruits[f] == val) {
            delete fruits[f];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你不应该在`for ... in`中检查`hasOwnProperty`吗? (2认同)
  • 您按值而不是键删除,并且值可能很容易出现两次.密钥保证只出现一次. (2认同)