javascript - 根据元素控制数组
问题描述
state = {
squares: Array(20).fill(null)
}
我有这种状态,当我单击一个随机方块时,数组开始填充该值。
我想控制数组中的所有元素是否不为空。
const squares = this.state.squares.slice();
squares.forEach(square => square ? console.log(true) : console.log(false))
this.setState({ squares: squares })
我这样做,当我开始单击方块时,我的控制台分别显示真假。在我单击所有方块后,它只显示为真。但是,在单击所有方块之前,我希望看到的是错误的。
我尝试使用 for 方法,但它没有用。
for (let i = 0; i < squares.length; i++) {
if (squares[i] !== null) {
console.log(true)
} else {
console.log(false)
}
}
这些也是我尝试过的
squares.forEach(square => square !== null ? console.log(true) : console.log(false))
和
if (squares.includes(null) === -1) {
console.log(true)
}
我怎样才能得到这个问题的解决方案?
解决方案
通过使用Array#every
或Array#some
:
console.log(squares.every(sq => sq !== null))
// or
console.log(!squares.some(sq => sq === null))
推荐阅读
- javascript - 保存在 indexeddb 中时,文件上的分配属性消失
- codesys - 如何在 CODESYS 中参数化功能块?
- java - 如何使用通过以太网在另一个线程中接收的数据更新 javaFX 表
- java - 在 Java Swing 中,有没有办法将文件保存到某种“lib”文件夹中?
- angular - Vert.x 事件总线客户端在构造函数之外的 Angular 7 中不起作用
- python - 从导入的模块访问外部类
- javascript - 用 ES6 填充缺失数据点的数组
- sql-server - SQL:根据是否存在连续记录进行计算
- android - 获取 android 房间数据库 java.lang.IllegalArgumentException 的以下异常:@androidx.room.Database 未定义元素视图()
- cassandra - Cassandra cqlsh 无法导入 cqlshhandling