当前位置: 首页 > 知识库问答 >
问题:

如何检查数组是空的还是不存在的?[重复]

商池暝
2023-03-14

检查数组是空的还是不存在的最好方法是什么?

像这样的?

if(array.length < 1 || array == undefined){
    //empty
}

共有1个答案

栾和风
2023-03-14

您想先检查未定义的。如果反过来做,如果数组未定义,它将生成一个错误。

if (array === undefined || array.length == 0) {
    // array empty or does not exist
}

这个答案得到了相当多的关注,所以我想指出,我最初的答案,比其他任何东西都更重要的是,解决了问题中被评估条件的错误顺序。从这个意义上讲,它无法解决几个场景,例如null值、具有length属性的其他类型的对象等。它也不是非常惯用的JavaScript。

万无一失的方法
从评论中获得一些灵感,下面是我目前认为万无一失的方法来检查数组是否为空或不存在。它还考虑到变量可能不引用数组,而是引用具有长度属性的其他类型的对象。

if (!Array.isArray(array) || !array.length) {
  // array does not exist, is not an array, or is empty
  // ⇒ do not attempt to process array
}

要分解它:

>

数组。length条件检查变量的length属性的计算结果是否为真实值。因为前面的条件已经确定我们确实在处理一个数组,所以需要进行更严格的比较,比如array。长度!=0数组。长度!==此处不需要0

务实的方法
在很多情况下,上面的方法可能看起来有些矫枉过正。也许您使用的是像TypeScript这样的高阶语言,它在编译时为您完成了大部分类型检查,或者您真的不在乎对象实际上是一个数组,还是只是一个类似数组的对象。

在这些情况下,我倾向于使用以下更惯用的JavaScript:

if (!array || !array.length) {
    // array or array.length are falsy
    // ⇒ do not attempt to process array
}

或者,更常见的是,它的反面:

if (array && array.length) {
    // array and array.length are truthy
    // ⇒ probably OK to process array
}

随着ECMAScript 2020中可选链接运算符(Elvis运算符)的引入,可以进一步缩短:

if (!array?.length) {
    // array or array.length are falsy
    // ⇒ do not attempt to process array
}

或者相反:

if (array?.length) {
    // array and array.length are truthy
    // ⇒ probably OK to process array
}

 类似资料:
  • 我下面有这些代码,如何检查是否为空? 如果我将,它显示此[] 如何检查数组是否为空,然后显示消息“This is empty”? 我试过了,但效果不好。即使它大于或小于0,也将始终显示“2”

  • 问题内容: 我在表中有一列,其中可能包含空值或空值。如何检查表中存在的行中的一列是空还是空? 问题答案: 这将选择is 或(空字符串)的所有行

  • 我想运行一个复杂的HQL查询。我的一个参数是< code >集合 类似: spring甚至不能启动< code >???未映射 从表t中选择t,其中size((:codes)) = 0或t.code IN (:codes) 和许多其他人 是否有一种通用方法可以进行此检查并使此查询在不完全构建查询的情况下工作?

  • 当页面第一次加载时,我需要检查中是否有图像,并加载最后一个图像。 否则,我禁用预览按钮,提醒用户按下新图像按钮,并创建一个空数组来放置图像; 问题是中的

  • 问题内容: 如何检查是否具有或的值? 问题答案: 使用? 顺便说一句,您要为键分配一个值两次,因此您的数组将导致一个只有一个值的数组。

  • 问题内容: PHP将所有数组视为关联数组,因此没有任何内置函数。谁能推荐一种相当有效的方法来检查数组是否仅包含数字键? 基本上,我希望能够区分以下两者: 和这个: 问题答案: 您问了两个不完全相同的问题: 首先,如何确定数组是否只有数字键 其次,如何确定数组是否具有从0开始的 连续 数字键 考虑您实际上需要哪种行为。(这也许可以满足您的目的。) 对于第二个问题(检查数组是否为零索引和顺序索引),可