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

Mar*_*ras 4 arrays typescript

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

testArray.includes(value)
Run Code Online (Sandbox Code Playgroud)

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

if (testArray == [] || testArray.includes(value)) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

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

我知道我可以这样修复它:

if (testArray == []) {
    // do something
} else if (testArray.includes(value)) {
    // do the same thing
}
Run Code Online (Sandbox Code Playgroud)

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

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

Maj*_* M. 9

该数组是一个reference type. 当您想用 进行检查时[ ],它们并不相等。他们是不同的;用 来检查这种情况length会更好。因此,根据您的代码,您应该执行以下操作:

if (!testArray || testArray.length == 0 || testArray.includes(value)) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)