检查对象键是否为空数组或检查它是否具有自己的属性

时间:2017-06-19 23:42:39

标签: javascript arrays object

我正在创建一个检查:

的函数
  1. 如果数组为空,则应返回undefined。
  2. 如果给定键的属性不是数组,则应返回undefined。
  3. 如果密钥没有属性,则应返回undefined。
  4. 所以我做的是我使用||创建了一个if语句操作员将案件分开:

    function getFirstElementOfProperty(obj, key) {
      if(obj.key.length === 0 || !obj.key.isArray || !obj.key.hasOwnProperty(key)){
        return undefined;
      }else{
          return obj.key[0];
      }
    
    }
    
    var obj = {
      key: [1, 2, 4]
    };
    

    出于某种原因,这不起作用。它还说"It Cannot read property 'length' of undefined"

    知道我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:2)

function getElem(obj, key){
    if (key in obj){
        if (Array.isArray(obj[key])){
            if (obj[key].length){
                return obj[key][0];
            }
        }
    }
    return undefined;
}

var obj = {key: [1, 2, 4], key2: []};
getElem(obj, "key")  // 1
getElem(obj, "key2")  // undefined
getElem(obj, "key3")  // undefined

不是javascript专家,但我相信这有效。如果我没记错的话,javascript没有短路评估,所以你需要嵌套if语句。

外部检查密钥是否存在,第二个内部检查它是否是一个数组,并且大多数内部检查该长度。如果它满足所有这些,它将返回第一个元素。否则返回undefined。