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

我有一个需要添加或prepend在数组的开始元素。

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

[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有任何内置的function吗?

我的方法的复杂性是O(n) ,看到更好的实现将是非常有趣的。

使用不unshift 。 这就像push ,除了添加元素到数组的开始而不是结束。

  • unshift / push – 将一个元素添加到数组的开始/结尾
  • shift / pop – 移除并返回数组的第一个/最后一个元素

一个简单的图…

  unshift -> array <- push shift <- array -> pop 

和图表:

  add remove start end push XX pop XX unshift XX shift XX 

查看MDNarrays文档 。 事实上,每个能够从数组中push / pop元素的语言都能够不移位/移位(有时也称为push_front / pop_front )元素,因此您不必自己实现这些元素。

数组操作图像

 var a = [23, 45, 12, 67]; a.unshift(34); console.log(a); // [34, 23, 45, 12, 67] 

使用ES6,使用扩展运算符...

 var arr=[23, 45, 12, 67] ; arr=[34,...arr]; // RESULT : [34,23, 45, 12, 67] 

快速备忘录:

shift / unshift和push / pop这两个术语可能有点混乱,至less对那些不太熟悉C编程的人来说可能有点混乱。

如果您对这个术语不熟悉,可以通过以下方式快速翻译其他术语,这些术语可能更容易记住:

 * array_unshift() - (aka Prepend ;; InsertBefore ;; InsertAtBegin ) * array_shift() - (aka UnPrepend ;; RemoveBefore ;; RemoveFromBegin ) * array_push() - (aka Append ;; InsertAfter ;; InsertAtEnd ) * array_pop() - (aka UnAppend ;; RemoveAfter ;; RemoveFromEnd ) 

另一种方法,通过concat做到这一点

 var arr = [1, 2, 3, 4, 5, 6, 7]; console.log([0].concat(arr)); 

你有一个数组: var arr = [23, 45, 12, 67];

要添加一个项目到开始,你想要使用splice

 var arr = [23, 45, 12, 67]; arr.splice(0, 0, 34) console.log(arr); 

在javascript中我们有一个名为unshift的函数来在数组的开头添加元素。

 var a = ["a1","a2","a3"]; a.unshift("a0"); // add element in array of first position console.log(a) a.shift("a0"); // remove element in array of first position console.log(a); a.push("a0"); // add element in array of last position console.log(a); a.pop("a0"); // remove element in array of last position console.log(a);