Il y a les résultats de requête suivants: (key1 et key2 pourrait être tout texte)tableaux associatifs multidimensionnels en JavaScript
id key1 key2 value
1 fred apple 2
2 mary orange 10
3 fred banana 7
4 fred orange 4
5 sarah melon 5
...
et je souhaite stocker les données dans une grille (peut-être comme un tableau) boucle tous les dossiers comme celui-ci:
apple orange banana melon
fred 2 4 7 -
mary - 10 - -
sarah - - - 5
En PHP ce serait vraiment facile, en utilisant des tableaux associatifs:
$result['fred']['apple'] = 2;
Mais en JavaScript, les tableaux associatifs comme celui-ci ne fonctionnent pas. Après avoir lu des tonnes de tutoriel, tout ce que je pouvais faire était le suivant:
arr=[];
arr[1]['apple'] = 2;
mais arr['fred']['apple'] = 2;
ne fonctionne pas. J'ai essayé des tableaux d'objets, mais les propriétés des objets ne peuvent pas être du texte libre. Plus je lisais des tutoriels, plus je suis confus ...
Toute idée est la bienvenue :)
Merci pour les réponses, mais je suis en boucle à travers les résultats de la requête, et je souhaite définir les valeurs une à la fois. Les lignes d'exemple (extrait de l'exemple Matt) 'var grille = {}; grille ['aa'] ['bb'] = 1;' renvoie "Uncaught TypeError: Impossible de définir la propriété 'bb' de undefined". Je peux me tromper, mais avec la plupart de vos exemples, je dois connaître les données au moment de l'initialisation. – Omiod
Je viens de trouver que 'var grid = {}; grille ['aa'] = {}; grid ['aa'] ['bb'] = 1; 'fonctionne. Un test plus complexe échoue, mais on dirait que je suis dans le bon chemin – Omiod
vous devez d'abord initialiser le sous-objet, comme je l'ai mentionné dans ma réponse. var grille = {}; grd ['aa'] = {}; * then * vous pouvez faire grid ['aa'] ['bb'] = 1. Il y a plusieurs façons de vérifier si le sous-objet est déjà initialisé (comme mentionné dans ma réponse), donc vous ne devez pas écraser un objet existant. – Matt