【问题标题】:Iterative conditional removal of object property using 'for..in' and 'if' [duplicate]使用'for..in'和'if'迭代有条件地删除对象属性[重复]
【发布时间】:2017-09-22 17:46:52
【问题描述】:

function removeNumbersLargerThan(num, obj) {
  for (var key in obj) {
    if (!isNaN(obj[key]) && obj[key] > num) {
      delete obj.key;
    }
  }
  return obj;
}
var obj = {
  a: 8,
  b: 2,
  c: 'montana'
}
removeNumbersLargerThan(5, obj);
console.log(obj); // Should be {b: 2, c: 'montana'}
该函数应该删除任何在“for”循环中满足“if”条件的属性,但它没有。

【问题讨论】:

  • 因为每个人都给你相同的答案,但没有人解释 为什么 你需要方括号:在你的例子中,key 变量是一个 @ 987654323@。如果要使用 delete obj.key 表示法,key 必须是要删除的密钥的实际名称。要按名称作为字符串删除键,您需要执行delete obj["myKey"]

标签: javascript loops object conditional


【解决方案1】:

在定义要删除的对象键时,您错过了方括号。

function removeNumbersLargerThan(num, obj) {
  for (var key in obj) {
    if (!isNaN(obj[key]) && obj[key] > num) {
      delete obj[key];
    }
  }
  return obj;
}
var obj = {
  a: 8,
  b: 2,
  c: 'montana'
}
removeNumbersLargerThan(5, obj);
console.log(obj); // Should be {b: 2, c: 'montana'}

【讨论】:

    【解决方案2】:

    您应该将delete obj.key; 替换为delete obj[key];

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 2011-06-18
      • 2015-08-10
      • 2013-08-13
      • 2023-03-28
      • 2020-10-20
      • 1970-01-01
      • 2012-07-23
      • 2012-02-14
      相关资源
      最近更新 更多