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ý是的,这是另一种方法。我总是喜欢这种方式。