actionscript-3flashflash-cs4

Create associative array with arrays as values


In cs4 I am attempting to create an associative array where the values are arrays. These arrays have just two elements and I want to call one of these two elements like this:

var array1:Array = [5, "Example String"]
var array2:Array = [7, "Example String 2"]
var associativeArray:Object = {a1:array1, a2:array2}

trace(associativeArray[a1[0]]) // Print out the value of the first element of the first array. Should print out 5

However this does not print out the first element. Curiously if you omit the "[0]" the program does print the entire array like this: "5, Example String".

How would I go about printing just one element from the array which is inside the associative array.


Solution

  • The sequence of arguments is wrong in your square bracket access operator [ ]. You need to use the correct notation:

    // The whole collection.
    trace(associativeArray);
    
    // The collection element, square bracket notation.
    // The key MUST be a String.
    trace(associativeArray["a1"]);
    
    // The collection element, dot notation.
    trace(associativeArray.a1);
    
    // Access the element of collection element.
    trace(associativeArray["a1"][0]);
    trace(associativeArray.a1[0]);
    
    // WRONG. Access non-existent element of the collection.
    trace(associativeArray[a1[0]]);
    trace(associativeArray["a1"[0]]);