J'ai besoin d'ajouter ou de précéder des éléments au début d'un tableau.
Par exemple, si mon tableau ressemble à celui ci-dessous :
[23, 45, 12, 67]
Et la réponse de mon appel AJAX est 34
, je veux que le tableau mis à jour soit le suivant :
[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 procéder ? Javascript a-t-il une fonctionnalité intégrée qui permet de faire cela ?
La complexité de ma méthode est O(n)
et il serait vraiment intéressant de voir de meilleures implémentations.
Utilisez 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
- Supprime et retourne le premier/dernier élément d'un tableau.Un schéma simple...
unshift -> array <- push
shift <- array -> pop
et le graphique :
add remove start end
push X X
pop X X
unshift X X
shift X X
Consultez la documentation MDN sur les tableaux. Pratiquement tous les langages qui ont la possibilité de pousser ou d'extraire des éléments d'un tableau ont aussi la possibilité de décaler ou d'extraire des éléments (parfois appelés push_front
ou pop_front
), vous ne devriez jamais avoir à les implémenter vous-même.
Comme indiqué dans les commentaires, si vous voulez éviter de modifier votre tableau original, vous pouvez utiliser concat
, qui concatène deux ou plusieurs tableaux ensemble. Vous pouvez l'utiliser pour pousser fonctionnellement un élément unique à l'avant ou à l'arrière d'un tableau existant ; pour ce faire, vous devez transformer le nouvel élément en un tableau à élément unique :
``javascript const array = [ 3, 2, 1 ]
const newFirstElement = 4
const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]
`concat` peut également ajouter des éléments. Les arguments de `concat` peuvent être de n'importe quel type ; ils sont implicitement enveloppés dans un tableau à un seul élément, s'ils ne sont pas déjà un tableau :
``javascript
const array = [ 3, 2, 1 ]
const newLastElement = 0
// Ces deux lignes sont équivalentes :
const newArray1 = array.concat(newLastElement) // [ 3, 2, 1, 0 ]
const newArray2 = array.concat([newLastElement]) // [ 3, 2, 1, 0 ]
! [image des opérations du tableau] [1]
var a = [23, 45, 12, 67];
a.unshift(34);
console.log(a); // [34, 23, 45, 12, 67]
Cheatsheet rapide:
Les termes shift/unshift et push/pop peuvent être un peu déroutants, du moins pour les personnes qui ne sont pas familières 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 )