No estoy seguro de que sea más eficiente en términos de big-O, pero ciertamente usar el unshift
método es más conciso:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Editar]
Este punto de referencia jsPerf muestra que unshift
es decentemente más rápido en al menos un par de navegadores, independientemente de un posible rendimiento de big-O diferente si está de acuerdo con modificar la matriz en el lugar. Si realmente no puede mutar la matriz original, entonces haría algo como el fragmento a continuación, que no parece ser apreciablemente más rápido que su solución:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Editar 2]
Para completar, la siguiente función se puede utilizar en lugar del ejemplo de OP prependArray(...)
para aprovechar el unshift(...)
método Array :
function prepend(value, array) {
var newArray = array.slice();
newArray.unshift(value);
return newArray;
}
var x = [1, 2, 3];
var y = prepend(0, x);
y; // => [0, 1, 2, 3];
x; // => [1, 2, 3];