Nie jestem pewien, czy jest bardziej wydajny pod względem big-O, ale na pewno użycie tej unshift
metody jest bardziej zwięzłe:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Edytować]
Ten test porównawczy jsPerf pokazuje, że unshift
jest przyzwoicie szybszy w co najmniej kilku przeglądarkach, niezależnie od możliwej różnej wydajności big-O, jeśli jesteś w stanie zmodyfikować tablicę na miejscu. Jeśli naprawdę nie możesz zmutować oryginalnej tablicy, możesz zrobić coś takiego jak poniższy fragment, który nie wydaje się być znacznie szybszy niż rozwiązanie:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Edytuj 2]
Dla kompletności można użyć następującej funkcji zamiast przykładu OP, prependArray(...)
aby skorzystać z unshift(...)
metody 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];