We had a great webinar on Arrays! Here are links to the videos
- First hour video discussing below points
- Second hour where we took a deep dive trouble-shooting an attendee’s script
Benefits of Simple and Associative Arrays in AutoHotkey
- Speed – Objects are very fast!
- Code maintenance / easier to update
- Structured data
- Easier to read / understand
- Dot notation (names) can be very easy to read
- Automatically group “variables” in a meaningful structure / Nesting deeper levels
- Built-in functionality
- Iterating over keys / values
- Insert / Append to last
- Remove / Remove last item
- Count (Length)
- Set / assign value (Index/Key – Value pair)
- Retrieve / Lookup (Index/Key – Value pair)
Things to Remember with Simple and Associative Arrays in AutoHotkey
- Keys are not case sensitive The following results in one key-value pair: {ex:1,EX:2}
- Keys are unique (If you have duplicates, only the last one will be kept)
- Simple Arrays can not have “empty” spots
- Associative Arrays are not, necessarily, ordered in the way you’d expect (when iterate over can seem out of order)
- Simple arrays are sequential
- Simple Arrays can be considered Associative Arrays where the Index is the key
- You must declare the object before or during population
- To “nest” an object, you must declare the Parent and sub-objects first too!
- Although the same, Lexikos recommends using { } for Associative Array & [ ] for Simple Array
- You do not need to save the object to iterate over it
- Arrays are often returned from API calls in JSON
- While Simple and Associative Arrays in AutoHotkey take a bit of getting used to, in the long run, they are great time savers!
Resources for learning Simple and Associative Arrays in AutoHotkey
- Simple Arrays for Dummies– Video & Script from Joe Glines
- StackOverlfow – Jackie tutorial on Simple arrays
- Associative Array
- Creating an Array of Associative Arrays
- Creating an Associative Array of Associative Arrays
- Multilevel Associative Arrays
Featured script
Pasting clipboard to p.ahkscript.org– great for collaborating with others!
Additional Resources
During the webinar a few other scripts were mentioned. Here are the links that were shared:
- Cap’n Odin offered this for handling long text
- Converting Arrays to Strings. As an example Cap’n Odin for showing what is in an Array:
MsgBox, % ObjectToString({"AHK" : [1, 2, 3], "Joe" : ["http://the-automator.com/"], "Jackie" : {"URL" : "https://jszapp.com/"}}) ObjectToString(obj){ if(!IsObject(obj)){ return __IsNum(obj) ? obj : """" obj """" } bool := obj.Length() res .= bool ? "[" : "{" for key, value in obj { res .= (!bool ? """" key """ : " : "") ObjectToString(value) ", " } return SubStr(res, 1, -2) (bool ? "]" : "}") } __IsNum(Num){ if Num is Number return 1 return 0 }