30秒学会 JavaScript 片段 · 2020年1月25日

30秒学会 JavaScript 片段 – findLastIndex

Returns the index of the last element for which the provided function returns a truthy value.

Use Array.prototype.map() to map each element to an array with its index and value.
Use Array.prototype.filter() to remove elements for which fn returns falsy values, Array.prototype.pop() to get the last one.
-1 is the default value when not found.

代码片段

const findLastIndex = (arr, fn) =>
  (arr
    .map((val, i) => [i, val])
    .filter(([i, val]) => fn(val, i, arr))
    .pop() || [-1])[0];

使用样例

findLastIndex([1, 2, 3, 4], n => n % 2 === 1); // 2 (index of the value 3)
findLastIndex([1, 2, 3, 4], n => n === 5); // -1 (default value when not found)