我不确定在big-O方面是否更有效,但肯定使用unshift
方法更简洁:
var a = [1, 2, 3, 4];
a.unshift(0);
// => [0, 1, 2, 3, 4]
console.log({a});
[Edit]
这jsPerf benchmark表明,unshift
在至少两种浏览器中的速度都相当快,而不管可能的大O性能如何.if您可以在适当的位置修改array.如果你真的不能改变原来的数组,那么你可以做一些类似下面的代码片段的事情,这似乎不会比你的解决方案快多少:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Edit 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);
// x => [1, 2, 3];
// y => [0, 1, 2, 3];
console.log({ x, y });