【问题标题】:Check if array is empty or includes the value, typescript检查数组是否为空或包含值,打字稿
【发布时间】:2021-09-26 20:54:46
【问题描述】:

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

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
}

但它看起来不太好。 有没有办法把它合二为一?

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

【问题讨论】:

标签: arrays typescript


【解决方案1】:

实际上,数组是reference type。当您想使用[ ] 进行检查时,它们并不相等。它们是完全不同的,最好用length 检查这个情况。因此,根据您的代码,您应该执行以下操作:

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

【讨论】:

  • 我试过了,还是不行——testArray. length is underfinederror
  • 您能分享您的testArray 的项目吗?我更新了我的代码。请再试一次。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 2021-06-06
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2019-08-10
    • 2021-08-18
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多