Javascript-在布尔数组中获取真值的索引

时间:2018-06-22 06:20:48

标签: javascript arrays

假设我有一个具有以下值的数组-

var arr = [true, true, false, false, false, true, false];

我正在寻找可以提供以下输出的逻辑-

[0,1,5]

6 个答案:

答案 0 :(得分:3)

您可以使用.reduce()一次完成此操作:

const arr = [true, true, false, false, false, true, false]
const indices = arr.reduce(
  (out, bool, index) => bool ? out.concat(index) : out, 
  []
)
console.log(indices)

您首先将一个空数组[]作为initialValue传递到.reduce(),然后使用ternary ? operator来确定是否.concat() {{1} }。

答案 1 :(得分:1)

您可以映射索引或伪造值-1,然后过滤所有非-1的索引。

var array = [true, true, false, false, false, true, false],
    result = array
        .map((b, i) => b ? i : -1)
        .filter(i => i !== -1);
        
console.log(result);

答案 2 :(得分:0)

您可以简单地使用循环并在您的true条件下检查布尔值if

var arr = [true, true, false, false, false, true, false];
var indexArray = [];
arr.forEach((val, index) => {
  if(val){
    indexArray.push(index);
  }
});

console.log(indexArray);

答案 3 :(得分:0)

尝试

index

答案 4 :(得分:0)

基于逻辑本身而非JS范式的不同解决方案

ng update @angular/core

答案 5 :(得分:0)

一个可能更优雅的解决方案是:

[...arr.keys()].filter(i => arr[i])