it-swarm.com.de

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

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

Wenn mein Array beispielsweise wie folgt aussieht:

[23, 45, 12, 67]

Und die Antwort meines AJAX - Aufrufs ist 34. Ich möchte, dass das aktualisierte Array folgendermaßen aussieht:

[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? Verfügt Javascript über eine integrierte Funktionalität, die dies ermöglicht?

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

1286
Moon

Verwenden Sie unshift . Es ist wie Push , nur dass es statt des Endes Elemente am Anfang des Arrays hinzufügt.

  • unshift/Push - fügt ein Element am Anfang/Ende eines Arrays hinzu
  • shift/pop - Entfernt das erste/letzte Element eines Arrays und gibt es 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

Schauen Sie sich die Dokumentation zu MDN Array an . Praktisch jede Sprache, die Elemente aus einem Array pushen kann, hat auch die Möglichkeit, Elemente zu verschieben (manchmal auch als Push_front/pop_front bezeichnet). Sie sollten diese Elemente niemals selbst implementieren müssen.

2414
meagar

array operations image

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

1273
Maksym

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

DEMO

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

console.log(arr)

171
Abdennour TOUMI

Eine andere Möglichkeit, dies durch concat zu tun

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

Der Unterschied zwischen concat und unshift besteht darin, dass concat ein neues Array zurückgibt. Die Performance zwischen ihnen konnte hier gefunden werden. 

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

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

Hier ist das Testergebnis

enter image description here

62
zangw

Schnelles 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 der Sprache nicht vertraut sind, finden Sie hier eine kurze Übersetzung alternativer Begriffe, die sich leichter merken lässt:

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

* array_Push()     -  (aka Append ;; InsertAfter   ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter   ;; RemoveFromEnd ) 
42
dreftymac

sie haben ein Array: var arr = [23, 45, 12, 67];

Um ein Element am Anfang hinzuzufügen, verwenden Sie splice:

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

15
ozimax06

Push() fügt ein neues Element am Ende eines Arrays hinzu.
pop() entfernt ein Element vom Ende eines Arrays.

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

benutze theArray.unshift(response)

9
Harunur Rashid

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

5
Tirkesh Turkesh
var array = [23, 45, 12, 67];  
array.unshift(11);  
alert(array);
4
techdeepak

Ohne Mutieren

Eigentlich sind alle unshift/Push und shift/popmutate das Origin-Array.

unshift/Push fügt ein Element zu dem vorhandenen Array von Anfang/Ende hinzu und shift/pop entfernt ein Element vom Anfang/Ende eines Arrays.

Es gibt jedoch eine Möglichkeit, Elemente ohne Mutation zu einem Array hinzuzufügen. Das Ergebnis ist ein neues Array, das am Ende des Arrays unter dem folgenden Code hinzugefügt werden soll:

const originArray = ['one', 'two', 'three'];
const newItem = 4;
const newArray = originArray.concat(newItem);

Um den Anfang des ursprünglichen Arrays hinzuzufügen, verwenden Sie den folgenden Code:

const originArray = ['one', 'two', 'three'];
const newItem = 0;
const newArray = (originArray.reverse().concat(newItem)).reverse();

Auf diese Weise fügen Sie den Anfang und das Ende eines Arrays ohne Mutation hinzu.

3
AmerllicA

Wenn Sie ein Element kontinuierlich am Anfang eines Arrays einfügen müssen, ist es schneller, Push-Anweisungen gefolgt von einem Aufruf von reverse zu verwenden, anstatt ständig unshift aufzurufen.

Benchmark-Test:http://jsben.ch/kLIYf

3
Jenny O'Reilly

Mit splice fügen wir am Anfang ein Element in ein Array ein:

arrName.splice( 0, 0, 'newName1' );
0
Srikrushna Pal