javascript - js数组转字符串 - js数组长度




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

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

DEMO

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

console.log(arr)

我需要在数组的开始处添加或预先添加元素。

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

[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) ,看到更好的实现将会非常有趣。


快速备忘录:

shift / unshift和push / pop这两个术语可能有点令人困惑,至少对那些不熟悉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 ) 

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

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

一个简单的图...

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

和图表:

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

查看MDN阵列文档 。 实际上,每个能够从数组中push / pop元素的语言都具有不移位/移位(有时称为push_front / pop_front )元素的能力,您不应该自己去实现这些元素。


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

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

concatunshift之间的区别在于concat返回一个新的数组。 他们之间的表现可以在here找到。

function fn_unshift() {
  arr.unshift(0);
  return arr;
}

function fn_concat_init() {
  return [0].concat(arr)
}

这是测试结果





arrays