Hacker News new | ask | show | jobs
by sandrot 1861 days ago
Try using Array.from(arrayish).forEach() to convert the thing that looks like an array to an actual array. For instance, you can't use map() on a NodeList (document.querySelectorAll returns a NodeList), so you have to use Array.from(NodeList) to first convert it to an array.
1 comments

> Try using Array.from(arrayish).forEach() to convert the thing that looks like an array to an actual array.

Spread syntax is my goto for that:

  [...arrayish].forEach(...)
But, it being JavaScript, there’s probably a subtle distinction in where Array.from(arrayish) works and where [...arrayish] works.
There's a very big distinction.

`...foo` requires `foo` to be an iterable (implements the iterator known symbol).

`Array.From()` only requires it to be array-like and not necessarily iterable.

Good point. I don't think I've run into many non-iterable arraylikes, but I understand they used to be more common (e.g., a number of standard things that are now specced as iterable arraylikes used to be just the latter) and there’s probably a lot lurking in library/legacy code.