2015-11-04 1 views
0

Il existe un tableau multi-d et je souhaite y accéder. J'ai regardé autour de lui mais je ne pouvais pas trouver la réponse appropriée à ma question.Multidimensional Arrays et l'un des champs

Mon tableau est comme ça;

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] 

Ma question est comment puis-je atteindre seulement la deuxième colonne du tableau? J'ai essayé name = array[loop][1]; mais il dit "Impossible d'accéder à une propriété ou une méthode d'une référence d'objet null". Quelle est la bonne façon de faire cela?

Voici la partie principale du code.


obtenir


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)]); 
     } 
    } 
} 

mis


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]]); 
    } 
} 
+1

Ce serait la bonne façon de le faire. Montrez-nous le code, car sinon nous devrons deviner quel est le problème. – DodgerThud

+0

Etes-vous sûr que votre question et le code que vous avez ajouté sont liés?! S'il vous plaît ajouter juste la partie où vous avez ajouté vos données à la matrice et celle où vous l'obtenez à partir du tableau ... – akmozo

+0

@akmozo J'ai mis à jour la question et ajouté la partie où je 'push' le tableau. Mais si c'est la façon de le faire, il n'y aura pas de problème, probablement autre chose. – coner

Répondre

1

tableau est un tableau Multidimensional de tableaux, que vous pouvez créer comme ceci:

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 

ensuite pour obtenir des données:

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

Pour en savoir plus sur les multidimensional arrays jeter un oeil here.

Espérons que cela peut aider.

+0

'Pour la dernière partie; j = 0 -> trace: Doe j = 1 -> trace: Allen j = 2 -> trace: Guzman' donc 'trace (list [1] [1]); // donne Sue' right? – coner

+1

@coner Vous pouvez le tester;) mais il donne: John, Sue, Luiz et Sue ... pour obtenir Doe, Allen et Guzman vous devez utiliser 'trace (list [j] [2]);' ... – akmozo

2

Essayez ceci:

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));