JavaScript有类似于indexOf(lambda)的函数吗?

24

我想返回满足一元谓词的第一个元素的索引。

示例:

[1,2,3,4,5,6,7].indexOf((x) => x % 3 === 0) // returns 2

有这样的功能吗?我原来打算使用的替代方案是

[1,2,3,4,5,6,7].reduce((retval,curelem,idx) => 
{
   if(curelem % 3 === 0 && retval === undefined)
       retval = idx; 
   return retval;
}, undefined);

但当然这样做效率会更低,因为它在找到元素后不会停止遍历数组。


@Vohuman 把它作为答案发布(附上一个例子和更多的单词),我会给你点赞。 - zerkms
2个回答

34

“而且它的工作方式就像lambda函数一样。”---这个陈述看起来很奇怪。 - zerkms
嗯,实际上我无法想象它的意思是什么。我不知道“像 lambda 函数一样工作”意味着什么。对我来说(因为标准没有为此提供官方定义),lambda 函数 === 函数表达式。 - zerkms

15

是的,它存在:

console.log([1,2,3,4,5,6,7].findIndex((x) => x % 3 === 0));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接