Estas son las tres formas conocidas para fusionar arrays multidimensional en una sola arrays.

Dado el array:

var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];

Queremos tener este resultado:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Solucion 1: usando concat() y apply()

var myNewArray = [].concat.apply([], myArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

Solucion 2: usando reduce()

var myNewArray = myArray.reduce(function(prev, curr) {
  return prev.concat(curr);
});
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

Solucion 3:

var myNewArray3 = [];
for (var i = 0; i < myArray.length; ++i) {
  for (var j = 0; j < myArray[i].length; ++j)
    myNewArray3.push(myArray[i][j]);
}
console.log(myNewArray3);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

Echar un vistazo here estos 3 algoritmos en accion.

Para array infinitamente anidado probar Underscore flatten().

Si tiene curiosidad por la performance, here.