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

标签 javascript arrays object

<分区>

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

  1. 如果数组为空,则返回undefined。
  2. 如果给定键的属性不是数组,它应该返回 undefined。
  3. 如果键没有属性,它应该返回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]
};

出于某种原因,这不起作用。它还说 “它无法读取未定义的属性‘长度’”

知道我在这里错过了什么吗?

最佳答案

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

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

关于javascript - 检查对象键是否为空数组或检查它是否具有自己的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44641546/

相关文章:

javascript - JavaScript 中有 boolean 型数组吗?

java - 在对象数组中存储值,但有 2 个 Java 方法

javascript - JS如何向对象添加价格并通过参数传递

javascript - 如何使用 wicked good xpath 库编写跨浏览器 XPath 查询?

javascript - Mathjax 在 ajax 调用后不排版方程

javascript - 使用 CSS 控制额定填充率

c# - 无法将类型int隐式转换为int数组

java - Array.newInstance() 是如何工作的?

c++ - 将一个类对象的指针赋值给另一个类对象c++

javascript - 从 React 访问脚本标签回调 - AmazonPay