javascript - 在 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]
可能0
。0
在像下面这样的 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)
,我认为这看起来很糟糕。
解决方案
如果数组条目不存在,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?
}
}
}
推荐阅读
- ajax - VueJS - 迭代从 AJAX 调用返回的数据
- c# - 有没有办法使用 C# 使用特殊文件夹名称作为字符串访问特殊文件夹路径
- android - 使用领域和 kotlin 构建 android 应用程序时任务“:app:kaptGenerateStubsDebugKotlin”执行失败
- android - 如何获取由 NavHostFragment(导航架构组件)加载的片段(SupportMapFragment)的引用
- sql - 如何使用 Delphi 解决日期之间的 SQLite SUM()?
- angular - Angular 5:找不到 csv 文件
- xml - 当属性和文本内容匹配时,使用 xslt 2.0 从 xml 中的节点或节点中删除元素
- angularjs - ui-router $stateProvider 文本参数不与 ui-view 一起显示,AngularJS 1.6.x
- c# - 高度可扩展的分布式系统的应用程序/自定义性能计数器日志记录?
- javascript - 日期时间选择器 AngularJS/MomentJS 的默认值