【问题标题】:Does JavaScript have an indexOf(lambda) or similar?JavaScript 是否有 indexOf(lambda) 或类似的?
【发布时间】:2016-11-12 19:06:33
【问题描述】:

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

例子:

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

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

【问题讨论】:

标签: javascript algorithm optimization


【解决方案1】:

是的,它存在:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • “它的工作原理和lambd函数一样”——这句话看起来很奇怪。
    • 好吧,我想不出它实际上意味着什么。我不知道这意味着“像 lambda 函数一样工作”。对我来说(因为标准没有提供官方定义),一个 lambda 函数 === 一个函数表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2012-04-04
    相关资源
    最近更新 更多