Array findLast() and findLastIndex()

kdex kdex at kdex.de
Fri Aug 4 19:10:33 UTC 2017


I'm thinking that this may have performance benefits. The naïve approach would 
be something like:

```js
function findLast(array, fn) {
	return array.reverse().find(fn);
}
```

Note that this requires a reversed copy of `array` to reside in memory before 
`find` can be run, which is not a particularly useful thing to do when all you 
want is to start the search from another direction.

Instead, you would have to do something like:

```js
function findLast(array, predicate) {
	for (let i = array.length - 1; i >= 0; --i) {
		const x = array[i];
		if (predicate(x)) {
			return x;
		}
	}
}
```

which does the job, I guess. Apart from performance considerations, I would 
find it practical if all methods that work in *some* direction had a 
counterpart for the other direction, c.f. `trim{Start,End}`, `pad{Start,End}`, 
`reduce{,Right}`. It would be consistent, would it not?

On Friday, August 4, 2017 8:35:52 PM CEST Sebastian Malton wrote:
> I don't specifically have an exact use case but I can definitely think of
> some use cases for them. However, if these sorts of functions also work for
> array iterators then a reverse entries functions should suffice.
> 
> Sebastian 
> 
> From:  ljharb at gmail.com
> Sent: August 4, 2017 2:26 PM
> To:  sebastian at malton.name
> Cc: es-discuss at mozilla.org
> Subject: Re: Array findLast() and findLastIndex()
> 
> indexOf and reduce are the only iteration methods that have "reverse"
> versions - I think to add any others, a clear case would have to be made
> that *all* of them shouldn't get the same treatment.
> 
> What's your use case?
> 
> On Fri, Aug 4, 2017 at 11:19 AM, Sebastian Malton <sebastian at malton.name> 
> wrote: This function would be like find but would iterate from back to
> front. We already have find/findIndex but unlike indexOf they don't have a
> last counterpart.
> 
> Sebastian 
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170804/91a0703b/attachment.sig>


More information about the es-discuss mailing list