【问题标题】:Check if the property of a given object exists or not检查给定对象的属性是否存在
【发布时间】:2019-02-16 16:19:31
【问题描述】:

我正在尝试检查 myObj 是否具有“x”属性。但是,当 myObj 没有我要查找的属性时,不会返回任何内容。这是代码:

变量 myObj = { 礼物:“小马”, 宠物:“小猫”, 床:“雪橇” }; 函数 checkObj(checkProp) { 如果(myObj.hasOwnProperty(“礼物”)){ 返回 myObj[checkProp]; } 否则 if(myObj.hasOwnProperty("pet")){ 返回 myObj[checkProp]; } 否则如果(myObj.hasOwnProperty(“床”)){ 返回 myObj[checkprop]; } 别的 { 返回“未找到”; } }

【问题讨论】:

    标签: javascript


    【解决方案1】:

    注意:if (myObj.hasOwnProperty("gift")) 将始终输入,因为 myObj 具有属性 gift,因此永远不会评估其他条件。

    你不想这样做吗?

    var myObj = {
        gift: "pony",
        pet: "kitten",
        bed: "sleigh"
    };
    
    function checkObj(checkProp) {
    
        if (myObj.hasOwnProperty(checkProp)) {
            return myObj[checkProp];
        }
        else {
            return "Not Found";
        }
    }
    
    console.log(checkObj("gift"));
    console.log(checkObj("foo"));

    【讨论】:

      【解决方案2】:

      您应该检查您正在传递的属性,而不是在 if 子句中对属性进行硬编码。然后可以将其简化为三元运算符。 因为如果您有一个存储属性的变量,请使用 [] 表示法,它使用属性的值在您的对象中查找。

      如果 checkProp 变量为 'gift',则 myObj[checkProp] 变为 myObj.gift,因为使用了 checkProp 变量的值。

      function checkObj(checkProp) {
         return myObj[checkProp]?myObj[checkProp]:"Not found"
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用 Object.keys 来获取自己的属性列表,然后调用 Array.includes 来查找特定属性并返回它的值。

        const myObj = {
            gift: "pony",
            pet: "kitten",
            bed: "sleigh"
        };
        function checkObj(myObj, key){
          return Object.keys(myObj).includes(key) ? myObj[key] : "Not found";
        }
        console.log(checkObj(myObj, 'gift'));
        console.log(checkObj(myObj, 'pet'));
        console.log(checkObj(myObj, 'foo'));

        【讨论】:

          【解决方案4】:

          您可以使用in operator 来测试指定的属性是否在对象中:

          const myObj = {
              gift: "pony",
              pet: "kitten",
              bed: "sleigh"
          };
          
          function getProp(obj, prop) {
            return prop in obj ? obj[prop] : undefined;
          }
          
          console.log(getProp(myObj, 'gift'));
          console.log(getProp(myObj, 'pet'));
          console.log(getProp(myObj, 'bed'));
          console.log(getProp(myObj, 'noProp'));

          【讨论】:

            猜你喜欢
            • 2018-01-01
            • 1970-01-01
            • 2020-11-30
            • 2021-06-03
            • 1970-01-01
            • 2020-06-20
            • 2013-01-03
            • 2019-03-27
            • 1970-01-01
            相关资源
            最近更新 更多