如何在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);