Creating Dictionary in JavaScript
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Creating Dictionary in JavaScript
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].
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----
Why automate? I do automated testing because there's only so much a human being can do and remain healthy. Sleep is a requirement. So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.
Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----
Why automate? I do automated testing because there's only so much a human being can do and remain healthy. Sleep is a requirement. So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.
Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It must be, then what's the point of this dictionary?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----
Why automate? I do automated testing because there's only so much a human being can do and remain healthy. Sleep is a requirement. So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.
Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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; }
