Hallo mensen!
Ik ben nieuw hier, eerste post enzo dus doe aub niet raar als dit een domme vraag is.
Mijn probleem is als volgt:
Via Google heb ik het volgende JavaScript-shuffle algoritme gevonden:
Dit schijnt een bekend shuffle algoritme te zijn voor arrays in Perl en de maker van deze versie heeft hem "omgebouwd" naar JavaScript. Ik ben van plan om een string waarin een aantal tekens uit de ASCII-tekenset (erin gezet via String.fromCharCode) allemaal exact twee keer voorkomen te "husselen". Omdat JavaScript strings niet, zoals C dat bijvoorbeeld doet, als arrays ziet, heb ik mijn string, laten we hem "str1" noemen (zo heet hij niet in het script dat ik schrijf maar dat maakt niks uit), omgezet naar een array aan de hand van:
Vervolgens roep ik de fisherYates(strarray) functie aan en voeg ik de array weer samen met
Als ik vervolgens beide strings onder elkaar op mijn scherm zet met
dan blijkt str2.length in veel gevallen kleiner te zijn dan str1.length. Er vallen dus op de één of andere voor mij onverklaarbare manier in deze bewuste gevallen tekens "weg te vallen".
Mijn vraag aan jullie is of jullie mij kunnen helpen dit script werkend te krijgen zodat ik weer aan de slag kan!
Het is mogelijk dat er een fout in mijn source zit, maar dat verlkaart niet waarom er gevallen zijn waarin het script wel werkt.
Groeten:
Lefty2007
Ik ben nieuw hier, eerste post enzo dus doe aub niet raar als dit een domme vraag is.
Mijn probleem is als volgt:
Via Google heb ik het volgende JavaScript-shuffle algoritme gevonden:
code:
1
2
3
4
5
6
7
8
9
10
11
| function fisherYates ( myArray ) { var i = myArray.length; if ( i == 0 ) return false; while ( --i ) { var j = Math.floor( Math.random() * ( i + 1 ) ); var tempi = myArray[i]; var tempj = myArray[j]; myArray[i] = tempj; myArray[j] = tempi; } } |
Dit schijnt een bekend shuffle algoritme te zijn voor arrays in Perl en de maker van deze versie heeft hem "omgebouwd" naar JavaScript. Ik ben van plan om een string waarin een aantal tekens uit de ASCII-tekenset (erin gezet via String.fromCharCode) allemaal exact twee keer voorkomen te "husselen". Omdat JavaScript strings niet, zoals C dat bijvoorbeeld doet, als arrays ziet, heb ik mijn string, laten we hem "str1" noemen (zo heet hij niet in het script dat ik schrijf maar dat maakt niks uit), omgezet naar een array aan de hand van:
code:
1
2
| var strarray = new Array(); strarray = str1.split(""); |
Vervolgens roep ik de fisherYates(strarray) functie aan en voeg ik de array weer samen met
code:
1
| var str2=strarray.join(""); |
Als ik vervolgens beide strings onder elkaar op mijn scherm zet met
code:
1
| document.write(str1 + "<br>" + str2); |
dan blijkt str2.length in veel gevallen kleiner te zijn dan str1.length. Er vallen dus op de één of andere voor mij onverklaarbare manier in deze bewuste gevallen tekens "weg te vallen".
Mijn vraag aan jullie is of jullie mij kunnen helpen dit script werkend te krijgen zodat ik weer aan de slag kan!
Het is mogelijk dat er een fout in mijn source zit, maar dat verlkaart niet waarom er gevallen zijn waarin het script wel werkt.
Groeten:
Lefty2007