Question Comment puis-je ajouter de nouveaux éléments de tableau au début d'un tableau en JavaScript?


J'ai besoin d'ajouter ou de préfixer des éléments au début d'un tableau.

Par exemple, si mon tableau ressemble à ci-dessous:

[23, 45, 12, 67]

Et la réponse de mon appel AJAX est 34, Je veux que le tableau mis à jour soit comme suit:

[34, 23, 45, 12, 67]

Actuellement, je prévois de le faire comme ceci:

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

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

theArray = newArray;
delete newArray;

Y a-t-il une meilleure façon de faire cela? Est-ce que JavaScript a des fonctionnalités intégrées qui le font?

La complexité de ma méthode est O(n) et il serait vraiment intéressant de voir de meilleures implémentations.


1135
2017-11-10 00:35


origine


Réponses:


Utilisation unshift. C'est comme push, sauf qu'il ajoute des éléments au début du tableau au lieu de la fin.

  • unshift/push - ajouter un élément au début / à la fin d'un tableau
  • shift/pop  - enlever et retourner le premier / dernier élément de et tableau

Un diagramme simple ...

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

et tableau:

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

Vérifiez Documentation MDN Array. Pratiquement toutes les langues qui ont la capacité de pousser / pop éléments d'un tableau auront également la capacité de décalage / décalage (parfois appelé push_front/pop_front), vous ne devriez jamais avoir à les implémenter vous-même.


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



Avec ES6, utilisez l'opérateur de propagation ... :

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



Une autre façon de le faire à travers concat

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

La différence entre concat et unshift est-ce concat retourne un nouveau tableau. La performance entre eux pourrait être trouvée ici.

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

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

Voici le résultat du test

enter image description here


48
2018-02-19 10:56



Cheatsheet rapide: 

Les termes shift / unshift et push / pop peuvent être un peu déroutants, du moins pour les gens qui ne sont pas familiers avec la programmation en C.

Si vous n'êtes pas familier avec le jargon, voici une traduction rapide des termes alternatifs, qui peuvent être plus faciles à retenir:

* 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



vous avez un tableau: var arr = [23, 45, 12, 67];

Pour ajouter un élément au début, vous souhaitez utiliser 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() ajoute un nouvel élément à la fin d'un tableau.
pop() supprime un élément de la fin d'un tableau.

unshift() ajoute un nouvel élément au début d'un tableau.
shift() supprime un élément du début d'un tableau.

utilisation theArray.unshift(response)


1
2018-05-30 08:57