2009-07-01 8 views
0

Je travaille avec un tableau dans AS3, qui est sparse par défaut. Je fais un tableau et lui ajoute une valeur à une position donnée. J'annule son contenu à cet index. Il conserve cette valeur d'index, mais annule le contenu. Le problème est que la longueur trace toujours la même chose. Est-il un moyen de réellement supprimer cet index sans modifier l'un des autres index?AS3 - Garder un tableau clairsemé

ex: 
array:Array = new Array(); 
array[ 7 ] = new Array(); 
array[ 16 ] = new Array(); 
array[ 16 ] = null; 

Edit: Je veux le tableau le tableau de rester aussi faible que possible, de sorte que dans l'exemple ci-dessus le tableau tracerait que la longueur 7.

+0

2 questions: 1. Est-ce votre structure de données toujours être rares? 2. avez-vous besoin de méthodes comme décalage, décalage, épissure et tranche? – back2dos

+0

1. Oui. Les données seront toujours éparses. 2. Splice/Slice - Non requis si j'ai d'autres moyens de supprimer des données de la structure de données tout en conservant sa clarté. – grey

Répondre

1

utilisez le delete operator ... encore, la longueur restera 8 ... en réglant la valeur pour la clé 7 à null signifie toujours, il y a une valeur pour la clé 7, puisque Array peut contenir toutes les valeurs, y compris null. Si vous utilisez vraiment des tableaux clairsemés, pensez à utiliser flash.utils::Dictionary ... si l'ordre des clés compte, alors regardez dans flash.utils::Proxy ... ou faites une structure de données, qui n'utilise pas l'accès au tableau, mais qui a des méthodes getVal et setVal à la place ...

greetz

back2dos

+1

Etes-vous sûr? Ce qui suit: 'arr: Array = []; arr [200] = "test"; arr [500] = "test2"; supprimer arr [500]; trace (arr.length); 'traces 501 en tant que longueur. –

+0

Il semble que vous avez raison. Qui sait, peut-être que le comportement était comme réclamé, quand j'ai donné cette réponse il y a une demi-décennie: D Toujours, le reste s'applique;) – back2dos

+0

Ha. Eh bien, je pense que j'ai finalement trouvé une raison d'utiliser un dictionnaire après toutes ces années! –

0

Essayez cette

array.splice(7,1) 

splice()

+0

Cela modifie les index de tous les éléments après 7. – fenomas

Questions connexes