javascript - 为什么这不起作用(删除与对象属性匹配的属性)

标签 javascript object

为什么这不起作用?实现删除属性函数,该函数接受对象和属性名称,如果匹配则删除它,如果不匹配则返回 true

function removeProperty(obj, prop) {

  const keys = Object.keys(obj)

  for (const key of keys) {

    if (key === obj[prop]) {

      delete obj[prop]

      return true
    }
  }
  return false
}

最佳答案

因为 obj[prop] 是值。将 keyprop 进行比较:

function removeProperty(obj, prop) {
  const keys = Object.keys(obj)

  for (const key of keys) {
    if (key === prop) {
      delete obj[prop]

      return true
    }
  }
  return false
}

但是,由于对象属性是唯一的,因此您不需要迭代它们。使用in operator检查属性是否存在:

function removeProperty(obj, prop) {
  if (prop in obj) {
    delete obj[prop]

    return true
  }

  return false
}

关于javascript - 为什么这不起作用(删除与对象属性匹配的属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59636882/

相关文章:

javascript - Angular 1 路由不起作用 - 非常基本

javascript - HTML 模板呈现 - 奇怪的行为

javascript - 转换 javascript 对象列表

javascript - 在 vuejs 中,如何引用方法内完成的函数中的数据?

javascript - Lodash:_.has 检查返回 false 的键

javascript - JQuery UI 选项卡 - 居中

javascript - 桌面版 Chrome 支持的最大图像尺寸是多少?

javascript - 针对正确的 html 选择器 Angular js

javascript - JS检查对象数组是否包含对象

javascript:按实际顺序获取对象项