Hvordan kan jeg tilføje nye array-elementer i begyndelsen af et array i Javascript?

Jeg har brug for at tilføje eller tilføje elementer i begyndelsen af et array.

Hvis mit array f.eks. ser ud som nedenfor:

[23, 45, 12, 67]

Og svaret fra mit AJAX-opkald er 34, vil jeg have det opdaterede array til at se ud som følgende:

[34, 23, 45, 12, 67]

I øjeblikket planlægger jeg at gøre det på denne måde:

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

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

theArray = newArray;
delete newArray;

Er der nogen bedre måde at gøre dette på? Har Javascript nogen indbygget funktionalitet, der gør dette?

Kompleksiteten af min metode er O(n), og det ville være virkelig interessant at se bedre implementeringer.

Løsning

Brug [unshift][1]. Det er ligesom [push][2], bortset fra at det tilføjer elementer til begyndelsen af arrayet i stedet for til slutningen.

  • unshift/push - tilføjer et element til begyndelsen/enden af et array
  • shift/pop - fjerner og returnerer det første/sidste element i et array

Et simpelt diagram...


   unshift -> array 
Kommentarer (2)

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

Quick Cheatsheet:

Begreberne shift/unshift og push/pop kan være lidt forvirrende, i hvert fald for folk, der ikke er bekendt med programmering i C.

Hvis du ikke er bekendt med sproget, er her en hurtig oversættelse af alternative udtryk, som måske er lettere at huske:

* array_unshift()  -  (aka Prepend ;; InsertBefore ;; InsertAtBegin )     
* array_shift()    -  (aka UnPrepend ;; RemoveBefore  ;; RemoveFromBegin )

* array_push()     -  (aka Append ;; InsertAfter   ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter   ;; RemoveFromEnd ) 
Kommentarer (0)