Ich bin mir nicht sicher, ob Big-O effizienter ist, aber die Verwendung der unshift
Methode ist sicherlich prägnanter:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Bearbeiten]
Dieser jsPerf-Benchmark zeigt, dass er unshift
in mindestens einigen Browsern anständig schneller ist, unabhängig von der möglicherweise unterschiedlichen Big-O-Leistung, wenn Sie das Array direkt ändern können . Wenn Sie das ursprüngliche Array wirklich nicht mutieren können, würden Sie so etwas wie das folgende Snippet ausführen, das nicht wesentlich schneller zu sein scheint als Ihre Lösung:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Bearbeiten 2]
Der Vollständigkeit halber kann anstelle des OP-Beispiels die folgende Funktion verwendet werden prependArray(...)
, um die Array- unshift(...)
Methode zu nutzen:
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];