假设我有一个具有以下值的数组-
var arr = [true, true, false, false, false, true, false];
我在寻找逻辑,它会给我以下输出-
[0,1,5]
您可以使用. 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)