我正在构建一个Connect 4应用程序。在检查draw(tie)的条件时,我无法遍历使用Fill Function(7 x 6)数组构建的数组。
state = {
columnGrid: new Array(7)
.fill(0)
.map(() => new Array(6).fill(null)),
}
const test = this.state.columnGrid.slice();
console.log(测试)的结果:
(7) [Array(6), Array(6), Array(6), Array(6), Array(6), Array(6),
Array(6)]
0: (6) [null, null, null, null, null, null]
1: (6) [null, null, null, null, null, null]
2: (6) [null, null, null, null, null, null]
3: (6) [null, null, null, null, null, null]
4: (6) [null, null, null, null, null, null]
5: (6) [null, null, null, null, null, null]
6: (6) ["/static/media/golden.d6314cc9.png", null, null, null, null,
null]
我需要遍历所有数组并检查条件是否为array!== null
答案 0 :(得分:1)
您可以使用双重过滤器。像这样:
const test = [
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
["/static/media/golden.d6314cc9.png", null, null, null, null,null]
]
.filter(t =>
t.filter(tt => tt != null).length > 0);
console.log(test);
我只想通过放置一个 条件这些数组不为空,例如,如果(每个数组都不为空) {然后是平局},因此只想检查其中的每个元素 数组是否为空
在这种情况下:
const testArray = [
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
[null, null, null, null, null, null],
["/static/media/golden.d6314cc9.png", null, null, null, null,null]
];
const allSubArraysContainAtLeastOneValue =
testArray.filter(t =>
t.filter(tt => tt != null).length)
.length === testArray.length;
console.log(
`Did every subarray of testArray contain at least one value? ${
allSubArraysContainAtLeastOneValue
? "yes :D"
: "nope :("}`);
答案 1 :(得分:1)
以下内容将为您为每行提供一个布尔值,该布尔值将指示该行是否为空,即对于至少具有一个非空值的行为true:
var columnGrid = new Array(7)
.fill(0)
.map(() => new Array(6).fill(null));
columnGrid[6][0] = "test";
var isnull = columnGrid.map(row => row.some(Boolean));
console.log(isnull);
Boolean
回调实际上将查找“真实”的值,因此非空字符串将符合条件。但是,如果您的数组仅包含0或空字符串,则将不符合非null数组的条件。如果您希望更改,则不要传递Boolean
,而是将a => a !=== null
作为对some
的回调。但是,如果您的实际情况是值是null
或非空字符串,则上面的代码可以解决问题。