Mike M Mike M - 6 months ago 20
Javascript Question

Concat in an empty array in Javascript

I was browsing through some code and I was wondering how this could be useful

grid.push([].concat(row));


In my understanding it is the same as

grid.push([row]);


Why the 'concat' fuss?

Answer

You want to use .concat when you need to flatten the array and not have an array consisting of other arrays. E.g.

var a = [1,2,3];
var b = [4];

Scenario 1

console.log(b.push(a));
// Result: [4, [1,2,3]]

Scenario 2

console.log(b.concat(a));
// Result: [4,1,2,3]

So both of your scenarios in an array of array. Since [].concat() results in an array only, pushing both [row], [].concat(row) results in same result.

But if you want a flattened array, there is a slight change needed in your code, that you have to .concat the array row with grid and not .push the result of concat to it, as shown in scenario 2

Comments