从数组中,获取所有元素都为true的子数组的所有索引

时间:2017-12-12 16:37:24

标签: javascript arrays

这是我可以拥有的数组的示例:

let testArray = [
  [true, true, false],
  [false, true, false],
  [true, true, true],
  [false, true, false],
  [true, true, true]
]

如何检查子数组中的所有值是否为true,然后获取通过检查的所有子数组索引?

2 个答案:

答案 0 :(得分:3)

使用map创建包含index的对象和布尔值是否所有子数组元素都是trueeveryBoolean为回调),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; }