I this awesome... I've always done Array.from(new Array
But your approach makes perfect sense and is so much cleaner. Thank you!
If anyone is wondering why it works, it's because everything in JavaScript is an object. So, an array is an object with a length prop. Apparently Array.from just needs any object with a length prop to work
Something about ducks?
"If it walks like a duck, and it quacks like a duck, then it must be an object"
Re:Click
by DonHopkins on Saturday March 20, 2021 @07:17AM
(#26522283)
"If it walks like a duck, and it quacks like a duck, then it must be created by a QuackEnumeratorWalkManangerRepositoryProxyFactoryFactoryAdapterBroker." -Java
Of it has feathers, then as far as I'm concerned it is a duck.
Similarly, when I pick up a feathered pen in real life I become a duck
duckduckduck.duck is still available, by the way.
Well, .duck isn't a TLD yet and it may not be publicly available...
Now gogo.duck and go.duck would be nice aliases for DuckDuckGo. (There is ddg.gg of course.)
I did not know this variant, thanks. Having to fill the array with anything (even `undefined`) to iterate on it seemed such a weird concept (but then again, JS is weird).
The spread operator does not have the same quirk. I use it but it's still a bit weird tough
[...new Array(1000)].map(something)
Re:Click
by ficklepickle on Saturday March 20, 2021 @01:57AM
(#26521094)
You can drop the new
[...Array(1000)]
I think that is the least bits. Would love to be proven wrong :D
It may be shorter, but I like the spread syntax best used sparingly, it's harder to grasp why it was necessary there at a glance.
That's what I like in the elegance of Array.from({ length: 1000 }): it's a hack, but it reads naturally.
"Harder to grasp" only lasts until you're mildly familiar with the idiom.
[...Array(1e3)]
new Array(1000); ?
Try iterating on it, it won't work. This creates 1000 "empty slots".
In addition to franky47's more important point, I'll add that `new Array()` and `Array()` are equivalent.
Re:Click
by The_rationalist on Friday March 19, 2021 @11:10PM
(#26520514)
In java it would be default initialized but it isn't in js
Never heard of a "from" loop before.
Array.from lets you build an array from an iterable source (often used in conjunction with `new Set` to eliminate duplicates), or in this case, of a fixed length.
Not JavaScript, but... https://en.m.wikipedia.org/wiki/COMEFROM
Array.from({ length: 10000 }, button.click);