Javascript 检查数组中的值是否为真,并在typescript中返回这些值的索引

Javascript 检查数组中的值是否为真,并在typescript中返回这些值的索引,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有一个数组框 const box = [ true, false, true, false, true, false, false ]; 如果值为真,我想返回索引 例如,在这种情况下,它应该返回[0,2,4] 我已经写了这段代码,它给出了一个错误 const box=[真,假,真,假,真,假,假]; 常量索引=box.findIndex(x=>x==“true”); 控制台日志(索引)该代码返回-1,因为没有一个值作为字符串等于“true” 您可以使用函数Array.prototype.r

我有一个数组框

const box = [ true, false, true, false, true, false, false ];
如果值为真,我想返回索引

例如,在这种情况下,它应该返回[0,2,4]

我已经写了这段代码,它给出了一个错误

const box=[真,假,真,假,真,假,假];
常量索引=box.findIndex(x=>x==“true”);

控制台日志(索引)该代码返回
-1
,因为没有一个值作为字符串等于
“true”

您可以使用函数
Array.prototype.reduce
生成所需的输出,如下所示:

这是假设每个值都是布尔值

const box=[真,假,真,假,真,假,假];
const result=box.reduce((r,bool,i)=>r.concat(bool?i:[]),[]);

console.log(result)
该代码返回
-1
,因为没有一个值作为字符串等于
“true”

您可以使用函数
Array.prototype.reduce
生成所需的输出,如下所示:

这是假设每个值都是布尔值

const box=[真,假,真,假,真,假,假];
const result=box.reduce((r,bool,i)=>r.concat(bool?i:[]),[]);

console.log(result)
一个简单的for循环将完成以下工作:

let索引=[];
for(设i=0;i
一个简单的for循环可以完成这项工作:

let索引=[];
for(设i=0;i
您可以使用索引或空数组

const
框=[true,false,true,false,true,false,false],
索引=box.flatMap((b,i)=>b?i:[]);
控制台日志(索引)您可以使用索引或空数组

const
框=[true,false,true,false,true,false,false],
索引=box.flatMap((b,i)=>b?i:[]);

控制台日志(索引)该代码返回-1“it is giving error”-请提供错误或更详细地描述问题
x==“true”
是错误的,它检查字符串,它应该是
x=>x===true
或只是
x=>x
。但是,它仍然只返回第一个索引。该代码返回-1“it is giving error”-请提供错误或更详细地描述问题
x==“true”
是错误的,它检查一个字符串,它应该是
x===true
或只是
x=>x
。但是它仍然只返回第一个索引。使用扩展语法怎么样<代码>框.reduce((r,bool,i)=>bool?[…r,i]:r),[])。只是一个替代性的小改进(IMO)@JanStránský是的,这是另一种方法。我总是喜欢这种方式。那么使用扩展语法呢<代码>框.reduce((r,bool,i)=>bool?[…r,i]:r),[])。只是一个替代性的小改进(IMO)@JanStránský是的,这是另一种方法。我总是喜欢这种方式。