2016-07-10 2 views
4

単項述語を満たす最初の要素のインデックスを返したいとします。JavaScriptにはindexOf(ラムダ)などがありますか?

例:

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

が、それはそれは要素を発見した後に、配列を反復処理を停止しませんので、あまり効率的である当然でした。

+1

[Array.prototype.findIndex()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) – undefined

+0

@Vohumanは答えとして投稿しています例とカップルの数を増やすと) – zerkms

答えて

6

をはい、そのような機能があります。このメソッドはECMAScript 2015によって導入されました。古いブラウザをサポートするには、polyfillを使用する必要があります。

+0

"とlambd関数のように動作します---この文は奇妙に見えます。 – zerkms

+0

https://www.youtube.com/watch?v=UxgXfVZ4qIA – user6048670

+0

さて、実際にはどういう意味か分かりません。私は何かが「ラムダ関数のように働く」ことを意味するのか分かりません。私には(標準ではその定義が公式に定義されていないので)ラムダ関数===関数式です。 – zerkms