提问者:小点点

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


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

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

我在寻找逻辑,它会给我以下输出-

[0,1,5]

共3个答案

匿名用户

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

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

匿名用户

您可以映射索引或错误值-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);

匿名用户

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

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

或替代地

[...arr.entries()].filter(([, v]) => v).map(([i]) => i)