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

如何检查对象是否没有函数参数中提到的属性?[副本]

阎德宇
2023-03-14

我想通过将变量传递到参数来检查using function是否在对象中存在该属性。我尝试了所有三种常用的方法来检查对象的现有属性,但仍然得到了未定义的输出。有人能告诉我哪里错了吗?。

 var obj=[
        {
            "firstName": "James",
            "lastName": "Bond"

        }];

    function propExists(prop)
    {
      //I tried #1
      if(obj.hasOwnProperty(prop)===false)
       {
         return "Property doesn't exist";
       }
     //I tried #2
      if(!(prop in obj))
       {
         return "Property doesn't exist";
       }
     //I tried #3  
      if("undefined" === typeof(obj[prop]))
       {
         return "Property doesn't exist";
       }
    }

    console.log(propExists("Date of birth"));

共有2个答案

封瑞
2023-03-14

从使其成为阵列的obj中删除方括号

var obj = {
  "firstName": "James",
  "lastName": "Bond"
};
彭展
2023-03-14

您实际上使用的是对象数组。

因此,obj[0]将为您提供第一个对象。

另外,hasOwnProperty是一个布尔值,指示对象是否具有指定的属性。因此,您不需要在if条件中专门测试它是否为真

 var obj = [{
   "firstName": "James",
   "lastName": "Bond"

 }];

 function propExists(prop) {
   if (obj[0].hasOwnProperty(prop)) {  // will be evaluated as true/false
     return "Propert exist";
   } else {
     return "Property doesn't exist";

   }

 }

 console.log(propExists("Date of birth"));

演示

 类似资料:
  • 问题内容: 在遍历数组时,我需要一些帮助,我会不断卡住或重新发明轮子。 如何检查数组中是否有两个(或多个)相同的名称值?我不需要计数器,只需在数组值不是唯一的情况下设置一些变量即可。请记住,数组长度是动态的,数组值也是动态的。 问题答案: 使用array.prototype.map和array.prototype.some:

  • 问题内容: 我试图检查对象数组中是否存在特定项目(属性值),但找不到任何解决方案。请让我知道,我在这里想念的是什么。 问题答案: 您可以像这样过滤数组: 它将返回匹配闭包中指定条件的元素数组-在上述情况下,它将返回包含所有属性等于1的元素的数组。 由于您需要布尔结果,因此只需执行以下检查: 如果过滤后的数组至少包含一个元素,则为true

  • 所以我需要传入一个对象,其中每个属性都是数组。该函数将使用每个数组中保存的信息,但我希望通过检查其每个数组是否为空/空来检查整个对象是否为空(不仅仅是没有属性)。我目前所掌握的: 例如,这将导致上面的: 而这是我正在检查的空(也是真的): 上面的代码不起作用。提前道谢。

  • 问题内容: 如何检查对象在JavaScript中是否具有特定属性? 考虑: 那是最好的方法吗? 问题答案: 我对所给出的答案感到困惑-他们中的大多数都是完全错误的。当然,您可以拥有具有未定义,空值或假值的对象属性。因此,简单地将属性检查减少到甚至更糟,将给您完全误导的结果。 这取决于您要查找的内容。如果您想知道一个对象是否物理上包含一个属性(并且它不是来自原型链的某个地方),那么您就可以这样做。所

  • 这里有几个关于如何检查对象中是否存在属性的答案。 我一直在使用 但我想知道这和

  • 请看do while循环,我认为注释是不言自明的。我想检查该集合是否设置了所有具有符号a、b、c、d的卡片(借助数组或其他任何东西实现它)。