Ich bin mir nicht sicher, ob es in Bezug auf Big-O effizienter ist, aber sicherlich ist die Verwendung des unshift
Methode ist prägnanter:
var a = [1, 2, 3, 4];
a.unshift(0);
// => [0, 1, 2, 3, 4]
console.log({a});
[Editar]
Diese jsPerf-Benchmark zeigt, dass unshift
ist zumindest in einigen Browsern deutlich schneller, ungeachtet der möglicherweise unterschiedlichen Big-O-Leistung si Sie sind mit der Änderung des Arrays an Ort und Stelle einverstanden. Wenn Sie wirklich nicht das ursprüngliche Array mutieren können, dann würden Sie etwas wie das unten stehende Snippet tun, die nicht scheinen, spürbar schneller als Ihre Lösung zu sein:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Bearbeiten 2]
Der Vollständigkeit halber kann anstelle des OP-Beispiels auch die folgende Funktion verwendet werden prependArray(...)
um die Vorteile des Arrays zu nutzen unshift(...)
Methode:
function prepend(value, array) {
var newArray = array.slice();
newArray.unshift(value);
return newArray;
}
var x = [1, 2, 3];
var y = prepend(0, x);
// x => [1, 2, 3];
// y => [0, 1, 2, 3];
console.log({ x, y });