检查数组是否为空或包含值,打字稿

时间:2021-07-19 07:00:51

标签: typescript

我以这种方式检查数组是否包含该值:

testArray.includes(value)

如果数组为空或包含值,我需要执行相同的操作。所以我有这个条件:

if (testArray == [] || testArray.includes(value)) {
    // do something
}

但是 typescript 正在尝试执行此条件的第二部分,即使 testArray == []。所以我收到错误 testArray.includes is underfined

我知道我可以通过这种方式修复它:

if (testArray == []) {
    // do something
} else if (testArray.includes(value)) {
    // do the same thing
}

但是看起来不好看。 有没有办法把它放在一个 if 里?

testArray 是一个 openapi 查询参数,如果它很重要的话。

2 个答案:

答案 0 :(得分:2)

实际上数组是一个 reference type。当您想用 [ ] 进行检查时,它们不相等。它们完全不同,最好使用 length 来检查此条件:

if (!testArray || testArray.length == 0 || testArray.includes(value)) {
    // do something
}

答案 1 :(得分:-1)

if (testArray == [] || testArray.includes(value)) { // do something }

在 OR 运算符的情况下,如果第一个条件为真,它将跳过其余所有条件。话虽如此,您的第一个条件 testArray == [] 为 false ,因此它执行条件的第二部分。可能您的数组不是空数组,它具有未定义的值,因为它可能未初始化。因此它的抛出错误。

相关问题