Я не уверен насчет более эффективного с точки зрения big-O, но, конечно, использование unshift
метода более лаконично:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Редактировать]
Этот бенчмарк jsPerf показывает, что он unshift
работает прилично быстрее, по крайней мере, в нескольких браузерах, независимо от возможной разной производительности big-O, если вы согласны с изменением массива на месте. Если вы действительно не можете изменить исходный массив, сделайте что-то вроде приведенного ниже фрагмента, который, похоже, не будет значительно быстрее, чем ваше решение:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Редактировать 2]
Для полноты можно использовать следующую функцию вместо примера OP, prependArray(...)
чтобы воспользоваться преимуществом unshift(...)
метода 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];