如何在JavaScript中在数组开头添加新的数组元素?

2294

我需要在一个数组的开头添加或者插入元素。

例如,如果我的数组如下所示:

[23, 45, 12, 67]

我的 AJAX 调用响应是 34,我希望更新后的数组如下:

[34, 23, 45, 12, 67]

目前我打算这样做:

var newArray = [];
newArray.push(response);

for (var i = 0; i < theArray.length; i++) {
    newArray.push(theArray[i]);
}

theArray = newArray;
delete newArray;

有没有更好的方法?JavaScript有没有内置的功能可以做到这一点?

我的方法的复杂度是O(n),看到更好的实现会很有趣。


25
如果您需要在数组的开头不断插入元素,使用push语句然后调用reverse比一直调用unshift更快。 - Krisztián Balla
2
@JennyO'Reilly,你应该把这个作为答案发布。完美地匹配了我的使用情况。谢谢。 - rob
2
性能测试: https://jsperf.com/adding-element-to-the-array-start但是每个浏览器的结果都不同。 - Avernikoz
12个回答

8

使用splice方法,在数组的开头插入一个元素:

arrName.splice( 0, 0, 'newName1' );

8
如果您想将数组中的元素推送到数组的开头,请使用<func>.apply(<this>, <Array of args>)

const arr = [1, 2];
arr.unshift.apply(arr, [3, 4]);
console.log(arr); // [3, 4, 1, 2]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接