【问题标题】:Proper loop syntax to remove object properties if value = x如果 value = x 则删除对象属性的正确循环语法
【发布时间】:2015-10-15 14:17:46
【问题描述】:

假设我有一个像这样的对象:

obj = {
    property1: "Prop 1 value",
    property2: "-",
    property3: "Prop 3 value"
    property4: "-"
}

如果某个属性的属性值等于“-”,我想将其从对象中删除。

我研究过 for 循环,但我什至不知道这是否是处理对象的正确范例。

【问题讨论】:

  • this 的可能重复项。
  • @user340764 问题更多地与正确的循环机制有关,而不是如何删除对象属性。

标签: javascript loops object


【解决方案1】:

算法非常简单。您迭代对象中的所有属性,检查属性值是否等于"-" 并将其从对象中删除。

for (var key in obj) {
    if (obj[key] === '-')
        delete obj[key];
}

【讨论】:

  • 谢谢,“obj 中的键”是我缺少的语法!
【解决方案2】:

带有比较的简单 for in 循环。

var obj = {
    property1: "Prop 1 value",
    property2: "-",
    property3: "Prop 3 value",
    property4: "-"
}

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        if (obj[prop]==="-") {
            delete obj[prop];
        }
    }
}

其他选项是带有 for 循环的 Object.keys

var obj = {
        property1: "Prop 1 value",
        property2: "-",
        property3: "Prop 3 value",
        property4: "-"
    }
Object.keys(obj).forEach(function(key) {
    if(obj[key]==="-") {
        delete obj[key];
    }
});

【讨论】:

  • 我不认为hasOwnProperty 在这里真的是必需的。用包含 "-" 的值扩展基本的 Object 看起来很奇怪。
猜你喜欢
  • 2017-01-23
  • 2016-05-24
  • 2018-08-17
  • 1970-01-01
  • 2016-05-03
  • 2021-09-12
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多