length - javascript object foreach




Come posso aggiungere nuovi elementi dell'array all'inizio di un array in Javascript? (7)

Ho bisogno di aggiungere o anteporre elementi all'inizio di un array.

Ad esempio, se il mio array appare come di seguito:

[23, 45, 12, 67]

E la risposta dalla mia chiamata AJAX è 34 , voglio che l'array aggiornato sia come il seguente:

[34, 23, 45, 12, 67]

Attualmente sto pensando di farlo in questo modo:

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

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

theArray = newArray;
delete newArray;

C'è un modo migliore per farlo? Javascript ha una funzionalità integrata che fa questo?

La complessità del mio metodo è O(n) e sarebbe davvero interessante vedere implementazioni migliori.


Con ES6, usa l'operatore di spread ... :

DEMO

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

console.log(arr)


Se è necessario inserire continuamente un elemento all'inizio di una matrice, è più veloce utilizzare push istruzioni push seguite da una chiamata per l' reverse , invece di chiamare unshift tutto il tempo.

Test di riferimento: http://jsben.ch/kLIYf


Usa unshift . È come push , tranne che aggiunge elementi all'inizio della matrice anziché alla fine.

  • unshift / push : aggiunge un elemento all'inizio / alla fine di un array
  • shift / pop - rimuove e restituisce il primo / ultimo elemento di e array

Un semplice diagramma ...

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

e grafico:

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

Controlla la documentazione sulla matrice MDN . Praticamente ogni lingua che ha la capacità di spingere / schioccare elementi da una matrice avrà anche la possibilità di non spostare / spostare (talvolta chiamati elementi push_front / pop_front ), non dovresti mai pop_front implementare tu stesso.


Usando push, splice e index number inseriamo inizialmente un elemento in un array

arrName.push('newName1');
arrName.splice(0, 0,'newName1');
arrName[0] = 'newName1';

push() aggiunge un nuovo elemento alla fine di un array.
pop() rimuove un elemento dalla fine di un array.

unshift() aggiunge un nuovo elemento all'inizio di un array.
shift() rimuove un elemento dall'inizio di una matrice.

usa theArray.unshift(response)


Quick Cheatsheet:

I termini shift / unshift e push / pop possono essere un po 'confusi, almeno per quelli che potrebbero non avere familiarità con la programmazione in C.

Se non hai familiarità con il gergo, ecco una rapida traduzione di termini alternativi, che potrebbero essere più facili da ricordare:

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

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

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





arrays