javascript - sort - js array remove




如何在JavaScript中的數組的開頭添加新的數組元素? (4)

我需要在數組的開始處添加或預先添加元素。

例如,如果我的數組如下所示:

[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) ,看到更好的實現將會非常有趣。


使用ES6,使用擴展運算符...

DEMO

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

console.log(arr)


快速備忘錄:

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