[AS3]Functie om aantal unieke karakters te tellen werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een spelletje in AS3 heb ik een functie die het aantal unieke karakters in een string telt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function countUniqueChars(woord:String){
                var counter:int = 0;
                var tempArray:Array = new Array();
                var tempArray2:Array = new Array();
                tempArray = woord.split("",woord.length);
                for(i;i<tempArray.lenght;i++){
                    for(i;i<tempArray2.lenght;i++){
                            if(tempArray[i] == tempArray2[i]){
                                counter++
                                trace(counter);
                            }else{
                                tempArray2.push(tempArray[i]);
                            }
                        }
                }
                return tempArray2.length;
            }


De functie returned altijd 0, ik kan niet vinden waar de fout zit

Acties:
  • 0 Henk 'm!

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 12-09 09:04

Acid_Burn

uhuh

Ik ken AS3 zelf niet , maar je kan niet 2x dezelfde teller gebruiken (i). Voor je 2e loop moet je een andere var gebruiken.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Acid_Burn schreef op woensdag 19 oktober 2011 @ 20:23:
Ik ken AS3 zelf niet , maar je kan niet 2x dezelfde teller gebruiken (i). Voor je 2e loop moet je een andere var gebruiken.
Nog enger; i wordt niet eens juist gedeclareerd en de hele functie heeft geen return type gedeclareerd.

Dit zou in een degelijke IDE onmiddelijk afgeschoten worden, dus ik vermoed dat de TS gebruik maakt van Adobe's Flash Professional , welke het niet zo nauw neemt met correctheid van code. Als dat zo is dan kan ik aanraden om in elk geval Flash Builder in te stellen als de code editor voor Flash Professional om zo dit soort problemen sneller te zien.

In elk geval kan het een stuk efficienter en overzichtelijker dan het algoritme van de TS. Je moet er alleen even op komen om gebruik te maken van de hashmap functionaliteit die eigen is aan alle objecten in ECMAScript (waar ActionScript van afgeleid is).

code:
1
2
3
4
5
6
7
8
9
10
11
12
function countUniqueChars(word:String):int {
  var seen:* = {}, count:int;
  
  for( var i:int = -1, char:String = ""; ( char = word.charAt( ++i )) !== ""; )  {
    if ( !seen[ char ]) {
      seen[ char ] = true;
      ++count;
    }
  }
 
  return count; 
}