Frage Wie kann ich neue Array-Elemente am Anfang eines Arrays in JavaScript hinzufügen?


Ich muss Elemente am Anfang eines Arrays hinzufügen oder voranzustellen.

Zum Beispiel, wenn mein Array wie folgt aussieht:

[23, 45, 12, 67]

Und die Antwort von meinem AJAX Anruf ist 34Ich möchte das aktualisierte Array wie folgt aussehen:

[34, 23, 45, 12, 67]

Momentan plane ich es so zu machen:

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

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

theArray = newArray;
delete newArray;

Gibt es einen besseren Weg, dies zu tun? Hat JavaScript eingebaute Funktionen, die das tun?

Die Komplexität meiner Methode ist O(n) und es wäre wirklich interessant, bessere Implementierungen zu sehen.


1135
2017-11-10 00:35


Ursprung


Antworten:


Benutzen unshift. Es ist wie push, außer dass Elemente am Anfang des Arrays anstatt am Ende hinzugefügt werden.

  • unshift/push - Füge am Anfang / Ende eines Arrays ein Element hinzu
  • shift/pop  - Entferne und gebe das erste / letzte Element von und array zurück

Ein einfaches Diagramm ...

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

und Diagramm:

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

Besuche die MDN Array-Dokumentation. Praktisch jede Sprache, die die Fähigkeit hat, Elemente aus einem Array zu pushen / zu puffern, wird auch die Fähigkeit haben, die Verschiebung zu verschieben (manchmal auch als push_front/pop_front) Elemente sollten Sie diese nie selbst implementieren müssen.


2125
2017-11-10 00:37



array operations image

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


1161
2017-11-10 00:40



Verwenden Sie mit ES6 den Spread-Operator ... :

DEMO

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

console.log(arr)


121
2017-09-16 12:26



Eine andere Möglichkeit, das durchzuziehen concat

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

Der Unterschied zwischen concat und unshift ist das concat gibt ein neues Array zurück. Die Leistung zwischen ihnen konnte gefunden werden Hier.

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

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

Hier ist das Testergebnis

enter image description here


48
2018-02-19 10:56



Kurzer Cheatsheet: 

Die Begriffe Shift / Unshift und Push / Pop können etwas verwirrend sein, zumindest für Leute, die mit der Programmierung in C nicht vertraut sind.

Wenn Sie mit dem Jargon nicht vertraut sind, hier ist eine schnelle Übersetzung von alternativen Begriffen, die leichter zu merken sind:

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

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

38
2018-04-15 17:28



Du hast ein Array: var arr = [23, 45, 12, 67];

Um ein Element am Anfang hinzuzufügen, möchten Sie es verwenden splice:

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


13
2018-04-20 19:19



var testdata = new Array();
testdata = [23, 45, 12, 67];
testdata = [34, ...testdata]; 
console.log(testdata)
    


1
2018-05-29 06:14



push() Fügt am Ende eines Arrays ein neues Element hinzu.
pop() Entfernt ein Element vom Ende eines Arrays.

unshift() Fügt am Anfang eines Arrays ein neues Element hinzu.
shift() Entfernt ein Element vom Anfang eines Arrays.

benutzen theArray.unshift(response)


1
2018-05-30 08:57