coner
coner

Reputation: 270

Multidimensional Arrays and one of the fields

There is a multi-d array and I want to reach specific field in it. I have look around it but I was unable to find proper answer to my question.

My array is like that;

array-md
columns--  0 | 1  | 2

index 0 - [1][John][Doe]
index 1 - [2][Sue][Allen]
index 2 - [3][Luiz][Guzman]
.
.
.
index n - [n+1][George][Smith]

My question is how can I reach only second column of the array? I tried name = array[loop][1]; but it says "Cannot access a property or method of a null object reference". What is the right way to do that?

Here is main part of the code.


get


var lpx:int;
var lpxi:int;
var arrLen:int = Info.endPageArray.length;

for(lpx = 0; lpx < arrLen; lpx++)
{
    for(lpxi = Info.endPageArray[lpx][2]; lpxi < Info.endPageArray[lpx][1]; lpxi++)
    {
        if(Info._intervalSearch[lpxi] == "completed")
        {
            successCount++;
            Info._unitIntervalSuccess.push([lpx, successCount / (Info._intervalSearch.length / 100)]);
        }
    }
}

set


for(lpix = 0; lpix < arrayLength; lpix++)
{
    if(lpix + 1 <= arrayLength)
    {
        Info.endPageArray.push([lpix, Info._UnitsTriggers[lpix + 1], Info._UnitsTriggers[lpix]]);
    }
    else
    {
        Info.endPageArray.push([lpix, Info._UnitsTriggers[lpix], Info._UnitsTriggers[lpix - 1]]);
    }
}

Upvotes: 0

Views: 197

Answers (2)

Mark Dolbyrev
Mark Dolbyrev

Reputation: 1997

Try this:

var tempArr:Array = [];

function pushItem(itemName:String, itemSurname:String):void
{
    var tempIndex:int = tempArr.length;
    tempArr[tempIndex] = {};
    tempArr[tempIndex][tempIndex + 1] = {};
    tempArr[tempIndex][tempIndex + 1][name] = {};
    tempArr[tempIndex][tempIndex + 1][name][itemSurname] = {};
}

function getNameObject(index:int):Object
{
    var result:Object;

    if(index < tempArr.length)
    {
        result = tempArr[index][index + 1];
    }

    return result;
}

pushItem("Max", "Payne");
pushItem("Lara", "Croft");
pushItem("Dart", "Vader");

//
trace(getNameObject(0));
trace(getNameObject(1));
trace(getNameObject(2));

Upvotes: 2

akmozo
akmozo

Reputation: 9839

Multidimensional array is an array of arrays, which you can create like this :

var persons:Array = [
    ['John', 'Doe'],
    ['Sue', 'Allen'],
    ['Luiz','Guzman']
];

var list:Array = [];

for(var i:int = 0; i < persons.length; i++)
{
     list.push([i + 1, persons[i][0], persons[i][1]]);
}

trace(list);
// gives : 
//
//  1, John, Doe
//  2, Sue, Allen
//  3, Luiz, Guzman 

Then to get some data :

for(var j:int = 0; j < list.length; j++)
{
     trace(list[j][1]);     // gives for the 2nd line : Sue
}

For more about multidimensional arrays take a look here.

Hope that can help.

Upvotes: 1

Related Questions