首页 > 解决方案 > 在 if 语句中检查一个项目是否存在于数组中的最易读和最有效的方法,即使项目为 0

问题描述

给定以下数字数组

numbers = [[7, 4, 0, 1], // see 0 at position [0][2]
           [5, 6, 2, 2], 
           [6, 9, 7, 8], 
           [1, 4, 2, 0]]

我想检查内部数组中是否存在一个数字array[j]和一个array[j+2]. array[j]有时array[j+2]可能00在像下面这样的 if 语句中,由于是一个虚假值,我遇到了问题。

for (let i = 0; i < numbers.length; i++) {
  for (let j = 0; j < numbers[0].length; j++) {
    if (numbers[i][j] && numbers[i][j+2]) {
      // how to evaluate this to true even if numbers[i][j] or numbers[i][j+2] is the number 0?
     }
  }
}

我尝试添加一个额外的||检查以查看该数字是否为0,例如(numbers[i][j] || numbers[i][j] === 0) && (numbers[i][j+2] || numbers[i][j+2] === 0),我认为这看起来很糟糕。

标签: javascriptarraysif-statement

解决方案


如果数组条目不存在,JavaScript 将返回undefined. 因此,以下代码应该可以工作:

for (let i = 0; i < numbers.length; i++) {
  for (let j = 0; j < numbers[0].length; j++) {
    if (numbers[i][j] !== undefined && numbers[i][j+2] !== undefined) {
      // how to evaluate this to true even if numbers[i][j] or numbers[i][j+2] is the number 0?
     }
  }
}

推荐阅读