![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem laikiem w programowaniu, znam się tylko na podstawach, ale wklepywanie kodu i wymyślanie coś samemu bardzo mnie cieszy. Wymyśliłem sobie, że napiszę mały programik, który będzie pobierał od użytkownika cyfrę i kilka stringów, program będzie losował pomiędzy tymi stringami. To taki mały Randomizer. np. lotting(3, "Ktos mi pomoze", "nikt mi nie pomoze", "moze mi pomoga"); I w tym momencie funkcja lotting zwraca jeden z tych stringów. np. "moze mi pomoga" W czym problem: Manualnie napisałem 10 stringów, które pobiera program, ale chciałbym żeby mógł pobierać np. 100 stringów o ile tego raczej nie przeskoczę i będę musiał tutaj wprowadzać zmienne manualnie: var lotting = function(quantity, str0, str1, str2, str3, str4, str5, str6, str7, str8, str9) to chciał bym aby to kompilator zrobil za mnie to: str[0] = str0; str[1] = str1; str[2] = str2; Czy jest to w ogóle możliwe? Aby łatwiej było zrozumieć kod: var array przetrzymuje cyfry, a var str stringi. to tak jakby kontener dwuwymiarowy. kiedy np. array[4] = counter, to str[4] będzie zwrócone jako wynik tego losowania. Używam countera, ponieważ uznałem, że math.Random() jest zbyt przewidywalne w wynikach, tak więc math.Random() jest wykonywane kilkadziesiąt razy zanim, któraś ze stringów będzie wylosowana. Mam nadzieję, że zrozumiecie działanie kodu i o co mi chodzi. Podaje część kodu: CODE var counter = 100;
var str = new Array(100); var array = new Array(100); var lotting = function(quantity, str0, str1, str2, str3, str4, str5, str6, str7, str8, str9) { var emptyingVar = function() { for(var i = 0 ; i < str.length ; i++){ str[i] = "Empty var"; } }; var lottingEngine = function(quantityVar) { for(var j = 0; j < array.length ; j++){ array[j] = 0; } loop: for(var i = 0 ; i < quantityVar*counter ; i++){ x = Math.floor(Math.random()*quantityVar); for(var i0 = 0 ; i0 < quantityVar ; i0++){ if(x === i0){ array[i0]++; } } for(var i1 = 0 ; i1 < quantityVar ; i1++){ if(array[i1] === counter){ return str[i1]; //break loop; } } } }; var convertingStrToStr = function() { str[0] = str0; str[1] = str1; str[2] = str2; str[3] = str3; str[4] = str4; str[5] = str5; str[6] = str6; str[7] = str7; str[8] = str8; str[9] = str9; }; emptyingVar(); convertingStrToStr(); for(var i = quantity; i < 10 ; i++){ str[i] = "Empty var"; } var result = lottingEngine(quantity); return result; }; |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
JS ma do tego obsługę
![]()
Rozwiązanie to nie jest i tak idealne... i tego się tak nie robi jeśli tych dodatkowych argumentów może być naprawdę dużo. Lepiej jest po prostu przekazać funkcji od razu tablicę.
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
![]() Ten post edytował PrinceOfPersia 17.05.2013, 15:21:34 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję bardzo za pomoc, bardzo dobry i przydatny pomysł, aby użyć Array zamiast pojedynczych zmiennych.
Pozdrawiam E30Tomas Temat do zamknięcia |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:21 |