Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Tablice sprawdzanie czy wartość jest w przedziale.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
mam 3 tablice przy czym pierwsza to:
0,4,6,8,13

Dwie pozostałe to tablcie gdzie muszę sprawdzić czy dana wartość jest w przedziale liczb z dwóch tablic.
Poniżej tablice:
1,3,5,9,11,12
1,4,8,9,11,13

I sobie sprawdzam czy np: 4 jest w przedziale od 1 do 1 lub od 3 do 4 lub od 5 do 8 itd.

Uwzględniając większze lub równe czyli np: z pierwszej tablicy 4 znajduje się w przedziale od 3(z drugiej tablicy) do 4(z trzeciej tablicy). I to zostaje zapisane do nowej tablicy.
Mam skryp który to robi ale nie jest automatyczny nie umiem tego zrobić w pętli for.
I tak np:
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. function obliczenie() {
  3. var tablica1 = new Array();
  4. tablica1[0] = "0";
  5. tablica1[1] = "4";
  6. tablica1[2] = "6";
  7. tablica1[3] = "8";
  8. tablica1[4] = "13";
  9.  
  10.  
  11. var tablica2 = new Array();
  12. tablica2[0] = "1";
  13. tablica2[1] = "3";
  14. tablica2[2] = "5";
  15. tablica2[3] = "9";
  16. tablica2[4] = "11";
  17. tablica2[5] = "12";
  18.  
  19.  
  20. var tablica3 = new Array();
  21. tablica2[0] = "1";
  22. tablica2[1] = "4";
  23. tablica2[2] = "8";
  24. tablica2[3] = "9";
  25. tablica2[4] = "11";
  26. tablica2[5] = "13";
  27.  
  28.  
  29. var tablica = new Array();
  30. for (var f=0;f<tablica2.length;f++)
  31. {
  32. if(tablica1[1]>=tablica2[f] && tablica1[1]<=tablica2[f])
  33. {tablica[f]=f;}
  34. }
  35. xxx = tablica.filter(function(){return true});
  36. alert(xxx);
  37. }
  38. </script>
[JAVASCRIPT] pobierz, plaintext


Czyli na samym końcu skryptu sprawdzam czy czwórka znajduje się w którymś z przdziałów. I faktycznie znajduje się informacja zostaje zapisana do tablicy.

Nie wiem jak ten proces zautomatyzować aby sprawdzało odrazu dla wszystkich wartosci z tablicy pierwszej i zapisywało do tablicy te informacje.
prz3kus

  1. $ile = count($tablica1);
  2. for($i=0;$i<$ile;$i++)
  3. {
  4. if($tablica2[$i] < $tablica1[$i] && $tablica3[$i] > $tablica1[$i])
  5. echo("goodd ^^");
  6. }


edit:
dobra w js chciales nie wylukałem ^^
cykcykacz
Tak ci nie wyjdzie w php też.

Tablica pierwsza jest mniejsza od pozostałych.
prz3kus
no ale jak nic niema w 1 tablicy to nie ma co porównywać chyba nie? snitch.gif
cykcykacz
Sprawdzę na twój sposób ale chyba tak już próbowałem.
Nie zrobi dobrze tego ponieważ jak pisałem tablica pierwsz jest miejsza czyli pętla się wykona 4 razy i tamte tablcie wykonają się też 4 razy a powinno sproawdzić całą.

Edit:
Dobra powiedzymy że mi pomogłeś ale akurat mam na odwrót znaki porównania.
Dzięki!
Tyle razy próbowąłem to ustawić że już sam nie wiem czemu wyszło.
PrinceOfPersia
coś takiego spróbuj:
[JAVASCRIPT] pobierz, plaintext
  1. var tablica1 = [0,4,6,8,13], tablica2 = [1,3,5,9,11,12], tablica3 = [1,4,8,9,11,13];
  2.  
  3. var przedzialy = tablica2.map(function(liczba_z_tablica2, i) {
  4. return [liczba_z_tablica2, tablica3[i]];
  5. }); // zmienna przedzialy teraz zawiera tablice z elementami [1,1], [3,4], [5,8]...... itp.
  6.  
  7. var przefiltrowane = tablica1.filter(function(liczba) {
  8. return (przedzialy.filter(function(przedzial) {
  9. return liczba >= przedzial[0] && liczba <= przedzial[1];
  10. })).length;
  11. });
[JAVASCRIPT] pobierz, plaintext

o ile dobrze zrozumiałem założenia.
cykcykacz
Tylko ja nie wiem jak z tego skorzystać.

Dobra dzięki serioo.

Pomogłeś mi bardzo.

Hej,
mam tu jeszcze jeden problem.
[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


Nie wiem daleczego ale jeżeli podam zmienna ktora jest tablicą arrstrongsingle z takimi wartośćami [1,9,11] to źle mi oblicza.

Dwie pozostałe tablice to arremmultistart [0,4,6,8,13], arremmultistop[2,4,6,8,13]. Czyli tylko jeden jest w przedziale.

A skrypt wyświetla mi 1 i 11.

Dodam że jeżeli napiszę tablicę ręcznie [1,9,11] skrypt to dobrze wylicza ale jak podaję wzmienna źle liczy.

Co może być nie tak?
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.