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(...)
、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];