J'ai une fonction ceci est mon Comme vous pouvez le voir place le quand je console.log code> Le tableau code> où je souhaite créer une liste
non ordonnée code> à partir d'un tableau
code>. Le tableau
code> est imbriqué et donc un autre
code> doit être créé après un nouveau tableau code> démarré. La fonction fonctionne, mais il n'y a qu'un seul problème: la liste
non ordonnée code> ne s'affiche pas dans le bon ordre. Je ne sais pas pourquoi parce que j'ai fait la même fonction
code> dans
php code> et là, il est affiché dans le bon ordre. Le tableau
code> est comme suit:
javascript fonction code>: p>
html code> est la suivante: p>
html code> généré dans le
if-instruction code> à la fin de la liste
non ordonnée code> ça ne devrait pas. Des conseils sur la façon de s'attaquer à ce problème? Ou toute explication pourquoi elle ne fonctionne pas la même chose que dans
php code>? P>
code>
sujets code>, il ressemble à ceci: p>
(10) [Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2)]
0: (2) ["0", "Aanwezigen / afwezigen"]
1: (2) ["1", "Toevoegingen agenda"]
2: (2) ["2", "Update openstaande actiepunten"]
3: (2) ["3", "Jaarrekening 2018"]
4: (2) ["4", "Komende periode"]
5: (2) ["5", "Oplezen actiepunten"]
6: (2) ["6", "Rondvraag"]
7: Array(2)
0: "Marketing"
1: (3) ["Website", "Social media", "Nieuwsbrief"]
length: 2
__proto__: Array(0)
8: Array(2)
0: "Acquisitie"
1: (3) ["Leads", "Deals", "Netwerk"]
length: 2
__proto__: Array(0)
9: Array(2)
0: "Inkoop"
1: (2) ["Leveranciers", "Marges"]
length: 2
__proto__: Array(0)
length: 10
__proto__: Array(0)
3 Réponses :
Sachez que JSON a des objets et des tableaux, tandis que PHP confonde les deux en un seul type. JSON ne préserve pas l'ordre des objets; Si vous souhaitez la commande, assurez-vous d'utiliser des tableaux (c'est-à-dire à l'aide d'indices numériques consécutifs en PHP, aucune touche de chaîne). Cela impliquerait une restructuration de votre réseau. Par exemple, une liste d'éléments, où chaque article consiste en un nom et une liste d'enfants: Cette structure préserve la commande et est facile à itération sur JavaScript. P > p>
J'ai essayé cette structure mais cela n'a pas préservé la commande, j'ai eu la même sortie qu'auparavant.
Il est littéralement impossible d'obtenir la même sortie qu'avant, sauf si vous avez modifié la mauvaise partie de votre code ou de votre cache. D'une part, vous devrez également avoir adapté le JavaScript.
Vous devez également modifier votre fonction à l'écart de la modification des données de JSON au tableau.
Votre fonction devrait quelque chose comme ci-dessous. P>
for (const value of topics) { if (Array.isArray(value) && value.length > 1) { HTML = HTML + "<li>" + value[0] + "</li>"; for (let i = 0; i < value[1].length; i++) { HTML = HTML + "<ul>"; HTML = HTML + "<li>" + value[1][i] + "</li>"; HTML = HTML + "</ul>"; } } else { HTML = HTML + "<li>" + value[0] + "</li>"; } }
Utilisez un objet JavaScript. Itérez-le comme ceci:
p>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <div id="container"></div>
Comment code> variables code> à JS ressemble? Celui que vous avez posté ci-dessus est en php
J'ai mis à jour ma réponse @saharsh. On dirait que la commande n'est pas juste là déjà. J'ai créé les Sujets code> code>
TRAY code> comme ceci:
const topics = objet.tries (réponse.data); code>. Où
réponse.data code> est le tableau
code> comme je l'ai eu à partir de
php code>
On dirait que la commande de tableau a été faussée avant que cette boucle soit exécutée. Essayez de vérifier votre réponse aussi.
@Baspa L'ordre du tableau renvoyé par Object.entries () ne dépend pas de la définition d'un objet. S'il y a besoin de certains commandes, le tableau doit d'abord être trié comme
objet.entries (obj) .sort ((a, b) => B [0] .Localecompare (A [0])); < / Code> Voir Ce
Vous essayez d'itérer un tableau imbriqué PHP en JavaScript. Utilisez un objet JavaScript à la place, comme Ceci B> par exemple.