这是我可以拥有的数组的示例:
let testArray = [
[true, true, false],
[false, true, false],
[true, true, true],
[false, true, false],
[true, true, true]
]
如何检查子数组中的所有值是否为true
,然后获取通过检查的所有子数组索引?
答案 0 :(得分:3)
使用map
创建包含index
的对象和布尔值是否所有子数组元素都是true
(every
和Boolean
为回调),filter
仅选择所有元素为true
的那些元素,然后选择另一个map
仅获取索引。
let testArray = [
[true, true, false],
[false, true, false],
[true, true, true],
[false, true, false],
[true, true, true]
];
console.log(testArray
.map((subArray, index) => ({
index,
allTrue: subArray.every(Boolean)
}))
.filter((entry) => entry.allTrue)
.map((entry) => entry.index));

答案 1 :(得分:1)
你可以通过检查内部数组来减少外部数组,并且不需要索引。
var array = [[true, true, false], [false, true, false], [true, true, true], [false, true, false]],
allTrue = array.reduce((r, a, i) => r.concat(a.every(Boolean) ? i : []), []);
console.log(allTrue);

.as-console-wrapper { max-height: 100% !important; top: 0; }