Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查对象键是否为空数组或是否具有自己的属性_Javascript_Arrays_Object - Fatal编程技术网

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

Javascript 检查对象键是否为空数组或是否具有自己的属性,javascript,arrays,object,Javascript,Arrays,Object,我正在创建一个函数来检查: 如果数组为空,则应返回undefined 如果给定键处的属性不是数组,则应返回undefined。 如果键处没有属性,则应返回undefined 所以我所做的是,我使用| |运算符创建了一个if语句来分隔案例: function getFirstElementOfProperty(obj, key) { if(obj.key.length === 0 || !obj.key.isArray || !obj.key.hasOwnProperty(key)){

我正在创建一个函数来检查:

  • 如果数组为空,则应返回undefined
  • 如果给定键处的属性不是数组,则应返回undefined。
  • 如果键处没有属性,则应返回undefined
  • 所以我所做的是,我使用| |运算符创建了一个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]
    };
    
    出于某种原因,这不起作用。它还表示,
    “它无法读取未定义的”
    的属性'length'

    你知道我在这里遗漏了什么吗

    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语句


    外部检查键是否存在,第二个内部检查键是否是数组,大多数内部检查键的长度。如果它满足所有这些条件,则返回第一个元素。否则它返回未定义。

    您还可以检查是否存在
    obj
    obj.key
    。在我看来,您的
    obj.key
    未定义的
    数组.isArray(obj[key])?obj[key][0]:void 0执行该作业。