Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szukanie liczb w przedziale. Tablice.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
cykcykacz
Witam,
mam skrypt który szuka czy dana liczba jest w przedziale.
Założenie jest takie: mamy 3 tablice.
Tablica pierwsza są to liczby które mają być sprawdze czy są w przedziale.

Przedział jest określany z dwóch pozostałych tablic:
od 0 do 2
od 4 do 4
od 6 do 6
od 8 do 8
od 13 do 13

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. function obliczenie() {
  3. var tablica1 = [1,9,11], tablica2 = [0,4,6,8,13], tablica3 = [2,4,6,8,13];
  4.  
  5. var przedzialy = tablica2.map(function(liczba_z_tablica2, i) {
  6. return [liczba_z_tablica2, tablica3[i]];
  7. }); // zmienna przedzialy teraz zawiera tablice z elementami [1,1], [3,4], [5,8]...... itp.
  8.  
  9. var przefiltrowane = tablica1.filter(function(liczba) {
  10. return (przedzialy.filter(function(przedzial) {
  11. return liczba >= przedzial[0] && liczba <= przedzial[1];
  12. })).length;
  13. });
  14.  
  15. alert(przefiltrowane);
  16. }
  17. </script>
[JAVASCRIPT] pobierz, plaintext

I szukamy sobie. Skrypt działa fajnie tylko mam problem ponieważ dodając go do swojego skryptu błędnie mi wylicza wartość.
W skrypcie zamiast [1,9,11] podaje zmienna, ktora jest tablica powinna wyświetlić mi tylko 1 a jak podaje zmienna wyświetla mi 1 i 11.

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. // skryp liczący słowa, słowa pogrubione, słowa wersaliki(kapitaliki duże litery)
  3. function button() {
  4. var string = "<em>asd <strong>tamiza</strong> test</em> <strong>asd <em>xxx</em></strong> <strong>Szymon <em>Dawidowicz</em> robi <em>ogłoszenie</em></strong> <strong>w</strong> Gazecie <strong>Ostrowskiej.</strong> <strong>zxc <em>rty</em></strong>";
  5.  
  6. var test = string.split(" ");
  7.  
  8. var countarray = (test.length);
  9. // Ilość słów w ciągu dekorowanych i nie dekorowanych
  10. //alert(countarray); //14
  11. // End Ilość słów w ciągu dekorowanych i nie dekorowanych
  12.  
  13. // Ilość słów pomiędzy pojedynczych <strong>...</strong>
  14. var strongsingle = new Array();
  15.  
  16. for(n in test) {
  17.  
  18. var x = test[n];
  19.  
  20. var g = x.search("<strong>");
  21.  
  22. var p = x.search("</strong>");
  23.  
  24. if(g == 0 && p > 0)
  25. {
  26. strongsingle[n] = n;
  27. }
  28.  
  29. }
  30. // End Ilość słów pojedynczych czyli <strong>...</strong>
  31.  
  32. arrstrongsingle = strongsingle.filter(function(){return true});
  33.  
  34. //1, 9, 11 wystapienia w tablicy pojedynczych słów oznaczonych znacznikiem <strong>...</strong>
  35.  
  36. // Ilość słów pomiędzy pojedynczych <em>...</em>
  37. var emsingle = new Array();
  38.  
  39. for(k in test) {
  40.  
  41. var x = test[k];
  42.  
  43. var g = x.search("<em>");
  44.  
  45. var p = x.search("</em>");
  46.  
  47. if(g == 0 && p > 0)
  48. {
  49. emsingle[k] = k;
  50. }
  51.  
  52. }
  53. // End Ilość słów pojedynczych czyli <em>...</em>
  54.  
  55. arremsingle = emsingle.filter(function(){return true});
  56.  
  57. //4,6,8,13 wystapienia w tablicy pojedynczych słów oznaczonych znacznikami <em>...</em>
  58.  
  59. var emmultistart = new Array();
  60. var emmultistop = new Array();
  61. var strongstart = new Array();
  62. var strongstop = new Array();
  63.  
  64. for(y in test) {
  65.  
  66. var x = test[y];
  67.  
  68. var g = x.search("<em>");
  69.  
  70. var p = x.search("</em>");
  71.  
  72. var r = x.search("<strong");
  73.  
  74. var j = x.search("</strong>");
  75.  
  76. if(g == 0)
  77. {
  78. emmultistart[y] = y;
  79. }
  80.  
  81. if(r == 0)
  82. {
  83. strongstart[y] = y;
  84. }
  85.  
  86. if(p > 0)
  87. {
  88. emmultistop[y] = y;
  89. }
  90.  
  91. if(j > 0)
  92. {
  93. strongstop[y] = y;
  94. }
  95.  
  96. }
  97.  
  98. arremmultistart = emmultistart.filter(function(){return true});
  99.  
  100. //0,4,6,8,13
  101. arremmultistop = emmultistop.filter(function(){return true});
  102.  
  103. //2,4,6,8,13
  104. arrstrongstart = strongstart.filter(function(){return true});
  105. //1,3,5,9,11,12
  106. arrstrongstop = strongstop.filter(function(){return true});
  107. //1,4,8,9,11,13
  108.  
  109. //alert(tablica2.toString());
  110.  
  111. var tablica1 = arrstrongsingle, tablica2 = arremmultistart, tablica3 = arremmultistop;
  112.  
  113. var przedzialy = tablica2.map(function(liczba_z_tablica2, i) {
  114. return [liczba_z_tablica2, tablica3[i]];
  115. }); // zmienna przedzialy teraz zawiera tablice z elementami [1,1], [3,4], [5,8]...... itp.
  116.  
  117. var przefiltrowane = tablica1.filter(function(liczba) {
  118. return (przedzialy.filter(function(przedzial) {
  119. return liczba >= przedzial[0] && liczba <= przedzial[1];
  120. })).length;
  121. });
  122.  
  123. alert(przefiltrowane);
  124.  
  125. }
  126. </script>
[JAVASCRIPT] pobierz, plaintext
PrinceOfPersia
EDYCJA:
zmień to:
[JAVASCRIPT] pobierz, plaintext
  1. var przedzialy = tablica2.map(function(liczba_z_tablica2, i) {
  2. return [liczba_z_tablica2, tablica3[i]];
  3. });
[JAVASCRIPT] pobierz, plaintext


na to:
[JAVASCRIPT] pobierz, plaintext
  1. var przedzialy = tablica2.map(function(liczba_z_tablica2, i) {
  2. return [parseInt(liczba_z_tablica2), parseInt(tablica3[i])];
  3. });
[JAVASCRIPT] pobierz, plaintext


(czyli dodaj parseInt, żeby przekonwertować napis na liczbę, żeby się poprawnie porównywało)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.