2017-10-18 8 views

Répondre

3

Oui, c'est possible.

var map:Map<Int, String> = [100 => 'a', 101 => 'b', 102 => 'c']; 

    trace(map); // {100 => a, 101 => b, 102 => c} 

    for (v in map.keys()){ 
     if (v == 101) map.remove(v); 
    } 

    trace(map); // {100 => a, 102 => c} 

Vous pouvez jouer avec l'exemple à https://try.haxe.org/#AE894

+2

Il n'y a aucune garantie que les clés '()' itérateur faire face à l'insertion/retrait (comme il est avec 'iterator()'). La plupart des cibles créent une liste ou un tableau pour 'keys()', donc ils sont sûrs, mais pas tous (c'est à dire [Java vient à l'esprit] (https://github.com/HaxeFoundation/haxe/blob/5979a08/ std/java/_std/haxe/ds/StringMap.hx # L386)). –

0

Vous pouvez supprimer tout en boucle sur les clés de la carte.

trace("Remove every 2nd key"); 
for(k in myMap.keys()) 
{ 
    if(k % 2 == 0) 
    myMap.remove(k); 
} 

Voir mon exemple ici: https://try.haxe.org/#d3525