-1
votes

Reverse () ne fonctionne pas dans la matrice avec la touche String

Pourquoi inverse () code> ne fonctionne pas si mon tableau a des éléments avec une chaîne en tant que clé.

var myArray = [];
myArray["test"] = 100;
myArray["test2"] = 200;

console.log(myArray)
console.log(myArray.reverse())


3 commentaires

Cherchez-vous d'inverser une chaîne ou un tableau?


J'ai besoin d'inverser des éléments dans mon tableau


Ce n'est pas un tableau. Vous avez défini cela comme une matrice, mais a ensuite attribué des données comme un objet JSON. faire myarray.push (100); pour garder vos données comme une matrice.


3 Réponses :


1
votes

.Reverse () est une fonction de tableaux, où des éléments sont indexés par leur position. Votre code n'ajoute pas d'éléments à la matrice, mais ajoutez plutôt des propriétés sur l'objet Array. Cela fonctionne et les propriétés sont accessibles, mais l'inversion ne fait rien car ce ne sont pas des éléments. Le tableau est toujours de 0 longueur.

Vous devrez soit:

  1. Faites myarray un objet d'un type différent. Dans ce cas, l'inverse ne fonctionnera toujours pas et vous devrez écrire du code pour trier manuellement. D'autres réponses ont fourni des directives sur la manière de réaliser ce
  2. Ajoutez vos éléments à la matrice à l'aide de PUSH () ou des indices numériques, auquel cas vous perdrez les indices de chaîne, mais pouvez utiliser des méthodes de tri des arraes telles que . / code>

    Bien que les numéros ont une commande intrinsèque, des clés de propriété de l'objet Suivez les règles différentes . Si vous souhaitez inverser un objet indexé à la chaîne, envisagez d'écrire une fonction pour insérer des objets sur une nouvelle carte dans l'ordre inverse.


0 commentaires

0
votes

Puisque vous n'avez pas besoin de méthodes de tableau, il serait préférable de simplement utiliser un objet à la place.

Vous pouvez créer un nouveau tableau inversé en boucle sur objet.keys () code> en arrière . Voir le code en action ici . P>

P>

myArray = Object.entries(myArray).reverse().reduce((acc,[key,val])=>(acc[key]=val,acc),[])


5 commentaires

Semble un peu compliqué. Aucun moyen de le simplifier en quelque sorte?


L'utilisation d'un accès de propriété sur un tableau n'est pas une bonne pratique, envisagez d'utiliser un autre type


@ Mlarionov Oui, le tableau doit être un objet.


Weird prntscr.com/t5qqlu On dirait que seules les clés changèrent, mais sous l'aperçu, tout ressemble à la même chose


@Dipix Avez-vous essayé de la journalisation objet.entries du tableau? Comment cela est affiché dans la console peut varier. S'il est toujours dans le mauvais ordre, envisagez de modifier le tableau associatif vers un objet ( {} ).



0
votes

Les valeurs des tableaux ne sont accessibles que par index.

myarray [0] = 100;

myarray [1] = 200; < /p >p >CODECODE >CONSOLE.LOG(MYARRAY) // [100, 200]

console.log (myarray.Reverse ()) // [200 , 100]

Vous pouvez stocker des valeurs par les touches des objets. xxx

qui dit, vous pouvez inverser un objet en faisant cela: xxx


0 commentaires