当前位置: 首页 > 知识库问答 >
问题:

JS函数不能识别对象的属性[重复]

闾丘博
2023-03-14

我想创建一个JS函数,它接受两个参数:一个对象和一个属性。如果对象具有给定的属性,则函数应将其从对象中移除,并返回true。

这是我所能做到的,但它在测试用例中不断返回false。我相信是因为“obj.prop”部分没有正确捕捉——但不确定原因。

任何帮助都将不胜感激!

function removeProperty(obj, prop) {

  if ( obj.prop ) {

     delete obj.prop;
     return true;    

  }  else {

     return false;
  }
}

共有2个答案

郑卜鹰
2023-03-14

您正在使用点语法来获取属性--

通过这种方式,您实际上是在询问对象名为prop的属性

{
    prop: 'something'
}

您应该使用括号表示法--

function removeProperty(obj, prop) {
  if ( obj[prop] ) {
     delete obj[prop];
     return true;    
  }  else {
     return false;
  }
}
郎德馨
2023-03-14

这样更改。您传递的是变量,而不是属性的直接名称

 function removeProperty(obj, prop) {
  if (obj[prop]) {
    delete obj[prop];
    return true;
  } else {
    return false;
  }
}

 类似资料:
  • 我有一个小麻烦使用的日期。 我想我已经先用jquery声明了我的源代码,然后用datatable声明了我的源代码(我在他们的网站上检索包含最新版本的链接),但是当我加载网页时,我总是会收到相同的错误消息: 未捕获的语法错误:意外的标记{jQuery。延迟的异常:$(…)。DataTable不是函数类型错误:$(…)。DataTable不是一个函数 这显然是一个已知的问题,经过一些研究后我意识到了这

  • 我有一个函数,它将调用外部资源(例如REST)并根据结果返回JSON对象。 例如,如果我发送一个POST并且它可以工作,我需要对象是: 但是当它由于某种原因失败时,我不想要id(因为它将是未定义的)。类似于: 所以只有一个处理方法: 当一切正常时,它会工作,但当它失败时,它会呈现: 有没有办法使“id”成为可选的,这取决于它是否被定义?类似于: 那么在“未定义”中,它将被忽略?我知道我可以只取这个

  • 我正在为邮件服务配置创建一个组件 我的邮件属性文件看起来像 我试图获取端口值,但遇到了问题 是的,我知道这应该是一个整数值,但我的@Value注释已将**转换为字符串。所以我试了这个: ...一样的。 主机、用户名、密码等。装得好好的!如何获取我的端口值?为什么PropertySource没有自动转换这个参数?

  • 为什么在这里就能看到添加的属性?

  • 可能重复: 对象文字声明中的自引用 我在JS中有一些像这个例子这样的简单对象: 这个简单的东西不起作用;john和paul在wholename中未定义,因此我尝试使用“this”运算符,该运算符仅在执行函数时才起作用。但是如果我要用一个变量,而不是函数,我该怎么做呢?我还尝试了,但没有效果。

  • 如何迭代对象及其子对象的属性?我在中使用了,但无法获取歌曲信息:/