From ffe73704cd3a755617d276fbc9d6006ab08f93ec Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 24 Jan 2018 13:01:51 +0200 Subject: [PATCH] Add findLastIndex, update findLast --- snippets/findLastIndex.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 snippets/findLastIndex.md diff --git a/snippets/findLastIndex.md b/snippets/findLastIndex.md new file mode 100644 index 000000000..70dccd442 --- /dev/null +++ b/snippets/findLastIndex.md @@ -0,0 +1,18 @@ +### findLastIndex + +Returns the index of the last element for which the provided function returns a truthy value. + +Use `Array.map()` to map each element to an array with its index and value. +Use `Array.filter()` to remove elements for which `fn` returns falsey values, `Array.slice(-1)` to get the last one. + +```js +const findLastIndex = (arr, fn) => + arr + .map((val, i) => [i, val]) + .filter(val => fn(val[1], val[0], arr)) + .slice(-1)[0][0]; +``` + +```js +findLastIndex([1, 2, 3, 4], n => n % 2 === 1); // 2 (index of the value 3) +```