首页 > 解决方案 > 根据元素控制数组

问题描述

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)
}

我怎样才能得到这个问题的解决方案?

标签: javascriptarraysreactjs

解决方案


通过使用Array#everyArray#some

console.log(squares.every(sq => sq !== null))
// or
console.log(!squares.some(sq => sq === null))

推荐阅读