JavaScript是否有indexOf(lambda)或类似的?

时间:2016-07-10 21:41:08

标签: javascript algorithm optimization

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

示例:

[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);

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

2 个答案:

答案 0 :(得分:9)

是的,有这样的功能:Array.prototype.findIndex。该方法由ECMAScript 2015引入,您需要使用polyfill来支持旧版浏览器。

答案 1 :(得分:3)

是的,它存在:

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