Hello everyone,
I need your help with creating a dictionary in JavaScript with multiple keys, like this:
array = { "Load Case" : { "(Support)1" : { "Location(ft)" : 0, "Fy(kips)" : 0, "Mz(kft)" : 0, "Deflection(in)": 0, "Rotation(Deg)" : 0 }, "2" : { "Location(ft)" : 0, "Fy(kips)" : 0, "Mz(kft)" : 0, "Deflection(in)": 0, "Rotation(Deg)" : 0 }, }, "Envelope" : { } };
What i m trying to do is to get the values from a grid, and for each line set the name from row[0] as the main key, and as subkeys the name which are on column[0] and after that add values to the subkeys from table[i][j].
Is there a particular reason why you can't use the dictionary object provided natively in Windows?
See
https://support.smartbear.com/testcomplete/docs/scripting/dictionary-object.html
I am not used with dictionaries in javascript.
I ve tried something like this:
function testt() { var arrList = getActiveXObject("Scripting.Dictionary"); for (let i = 1; i <= wndConspanAnalysisGrid.wRowCount; i++) { var arrListColumns = getActiveXObject("Scripting.Dictionary"); //Principal keys for (let j = 1; j <= wndConspanAnalysisGrid.wColumnCount; j++) { arrListColumns.Add(GetCellText(0, j), GetCellText(i, j)); } var arrayTest = (new VBArray(arrListColumns.Items())).toArray(); Log.Message("Count " + arrayTest.length);
for (let k = 0 ; k < arrayTest.length; k++) Log.Message(arrayTest[i]);
arrList.Add(GetCellText(i, 0), arrListColumns); } return arrList; }
My new question is how can i print to log.message the whole dictionary to see if its working properly or a function to get the specific element from this dictionary?
I'm not sure you can.... There would have to be some way to convert the dictionary object into a string to write out to the log... and I'm not sure that you can natively do that.
It must be, then what's the point of this dictionary?
The point of any dictionary is to be able to have a means, by using a key, to return a value. So... that's what we have. Debugging and reporting on how the dictionary is constructed is simply a matter of development process.
Thanks a lot for your answers.
I solved my problem, i will post my code below, maybe will help someone.
var wndConspanAnalysisGrid = Aliases.LEAPBridgeConcrete.wndConspan.MDIClient.wndMain.pageMain.pageAnalysis.Custom1; function TestCreateDictionary() { var arrList = getActiveXObject("Scripting.Dictionary"); for (let i = 1; i <= wndConspanAnalysisGrid.wRowCount; i++) { var arrListColumns = getActiveXObject("Scripting.Dictionary"); //Sub keys for (let j = 1; j <= wndConspanAnalysisGrid.wColumnCount; j++) { arrListColumns.Add(GetCellText(0, j), GetCellText(i, j)); } //Principal keys arrList.Add(GetCellText(i, 0), arrListColumns); } /*var safeArray = (arrList.Keys().toArray()) for (let i in safeArray) { Log.Message("Key is: " + safeArray[i]); var lineD = arrList.Item(safeArray[i]); var line = lineD.Keys().toArray(); for (let k in line) Log.Message("Key is: " + line[k] + ", value is: " + lineD.Item(line[k])) }*/ var value = SearchValue(arrList, "2", "Location(m)"); Log.Message(value); //return arrList; } function SearchValue(arrList, lineKey, columnKey) { var line = arrList.Item(lineKey); return line.Item(columnKey); } function GetCellText(i, j) { return wndConspanAnalysisGrid.GetItemText(i, j).m_pszData; }
Subject | Author | Latest Post |
---|---|---|