Non sono sicuro di più efficiente in termini di big-O, ma sicuramente l'utilizzo del unshift
metodo è più conciso:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Modificare]
Questo benchmark jsPerf mostra che unshift
è decentemente più veloce in almeno un paio di browser, indipendentemente dalle prestazioni big-O eventualmente diverse se si è d'accordo con la modifica dell'array sul posto. Se davvero non puoi mutare l'array originale, dovresti fare qualcosa come lo snippet di seguito, che non sembra essere notevolmente più veloce della tua soluzione:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Modifica 2]
Per completezza, è possibile utilizzare la seguente funzione invece dell'esempio di OP prependArray(...)
per sfruttare il unshift(...)
metodo 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];