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

3

我正在创建一个检查功能,它检查以下内容:

  1. 如果数组为空,则应返回未定义。
  2. 如果给定键的属性不是数组,则应返回未定义。
  3. 如果该键没有属性,则应返回未定义。

所以我创建了一个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]
};

由于某些原因,这个不起作用。它还说“无法读取未定义的属性长度”。你有什么想法吗?

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Syntax - zerkms
您还可以检查 objobj.key 是否存在。看起来您的 obj.keyundefined - P.S.
我觉得 Array.isArray(obj[key])? obj[key][0] : void 0 可以完成这个任务。 - RobG
1个回答

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

外部if语句检查键是否存在,第二层if语句检查它是否为数组,最内层if语句检查长度。如果所有条件都满足,则返回第一个元素。否则返回undefined。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接