我不确定在big-O方面是否更有效,但是肯定使用该unshift
方法更为简洁:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[编辑]
这jsPerf基准表明,unshift
是体面快于至少一对夫妇的浏览器,不管可能不同的大O性能,如果您没有问题修改就地数组。如果您确实无法更改原始数组,则可以执行以下代码段,但似乎没有比您的解决方案快得多的方法:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[编辑2]
为了完整起见,可以使用以下函数代替OP的示例prependArray(...)
来利用Array unshift(...)
方法:
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];