DEV Community

loading...

Discussion on: Top 20 JavaScript tips and tricks to increase your Speed and Efficiency

Collapse
techygeeky profile image
Kapil Raghuwanshi🖥 Author

Well thanks for the comment @snigo . And I didn't want to sound like “Hey, I know a bit of JS”, if I did, share the points/sentences, will try to fix them.
However, as I pointed out earlier in the post that - there can be more than one approaches to the same problem, so feel free to share yours here.

Collapse
snigo profile image
Igor Snitkin

Enjoy:

const matrix = (x, y = x, fillValue = 0) => Array.from({ length: y }, () => Array(x).fill(fillValue));
Enter fullscreen mode Exit fullscreen mode

Now, number two: what's going to be the sum of an empty array in your example?

Thread Thread
techygeeky profile image
Kapil Raghuwanshi🖥 Author

How about these two?

const arr = Array.from(Array(4).fill('O'), () => new Array(4).fill('O'));
Enter fullscreen mode Exit fullscreen mode
const arr = [...Array(8)].map(() => Array(8).fill("0"))
Enter fullscreen mode Exit fullscreen mode
Thread Thread
snigo profile image
Igor Snitkin • Edited

If we talk about efficiency, then we first need to figure out .map or .from:

  • map: maps over elements returning new array 👎
  • from: mapFn maps over elements in place 👍

So from, which leaves us with the question what we're going to create our array from, right? So if we compare:

// Array from array
Array.from(Array(3), () => Array(3).fill(0));

// Array from object
Array.from({ length: 3 }, () => Array(3).fill(0));
Enter fullscreen mode Exit fullscreen mode

...it will boil down to the question what's more efficient to create Array(3) or { length: 3 }, and given arrays in JS are just objects it really comes to the number of properties we need to create for the object. How many properties does Array(3) have? (hint: 4) How many properties does { length: 3 } have? (hint: 1)

I hope this will clear things a bit

Thread Thread
techygeeky profile image
Kapil Raghuwanshi🖥 Author

Awesome and detailed explanation @snigo . ✌🏻
I have created GitHub Repo, feel free to contribute to that.
Thanks!🤗