Salut tout le monde!
Je dois convertir un petit tableau en une liste de tableaux associatifs. Chaque ligne est un élément de cette liste et constitue un tableau associatif dont les clés sont les noms des colonnes et les valeurs des lignes.
Actuellement, j'ai ceci :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
listAA = {};
columnList = dt << Get Column Names( string );
For Each Row(
currentAA = Associative Array();
For Each( {columnName, index}, columnList, currentAA[columnName] = Column( dt, columnName ) );
Insert Into( listAA, currentAA );
);
//Check
listAA[1]["age"]
//:*/
listAA[1]["age"]
/*:
Column( "age" )
Le résultat n'est pas une valeur, mais une référence à une colonne. Il semble donc que cela ne fonctionne pas lorsqu'on fait référence à une colonne avec `Column(name)` dans une boucle `For Each Row`, mais uniquement avec des noms codés en dur comme dans l'index des scripts.
For Each Row( :height = -:height );
Questions :
1. Existe-t-il une méthode simple et élégante pour obtenir une liste d'AA à partir d'un tableau ? Sinon, comment devrais-je modifier ma version actuelle ?
2. Comment faire référence à une colonne autrement que de manière codée en dur lors de l'utilisation de « Pour chaque ligne » ?
Merci,
M.
Peut-être quelque chose comme ça
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
collist = dt << Get Column Names(string);<BR />
l = {};
For Each Row(
aa = Associative Array(collist, dt[Row(), 0]);
Insert Into(l, aa);
);
Show(l);
Vous pouvez également l'enregistrer au format .json, puis l'analyser pour obtenir AA.
Names Default To Here(1);
path = "$TEMP/test.json";
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Save(path);
json_str = Load Text File(path);
Delete File(path);
l = Parse JSON(json_str);