我以这种方式检查数组是否包含该值:
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 查询参数,如果它很重要的话。
答案 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 ,因此它执行条件的第二部分。可能您的数组不是空数组,它具有未定义的值,因为它可能未初始化。因此它的抛出错误。