Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Tablice sprawdzanie czy wartość jest w przedziale.
cykcykacz
post 18.04.2013, 11:09:57
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
prz3kus
post 18.04.2013, 11:26:49
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

Ostrzeżenie: (0%)
-----



  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 ^^

Ten post edytował prz3kus 18.04.2013, 11:28:59
Go to the top of the page
+Quote Post
cykcykacz
post 18.04.2013, 11:31:48
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Tak ci nie wyjdzie w php też.

Tablica pierwsza jest mniejsza od pozostałych.

Ten post edytował cykcykacz 18.04.2013, 11:34:42
Go to the top of the page
+Quote Post
prz3kus
post 18.04.2013, 11:35:44
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

Ostrzeżenie: (0%)
-----


no ale jak nic niema w 1 tablicy to nie ma co porównywać chyba nie? snitch.gif
Go to the top of the page
+Quote Post
cykcykacz
post 18.04.2013, 11:38:35
Post #5





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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.

Ten post edytował cykcykacz 18.04.2013, 12:24:00
Go to the top of the page
+Quote Post
PrinceOfPersia
post 18.04.2013, 13:27:49
Post #6





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował PrinceOfPersia 18.04.2013, 13:35:13


--------------------
Go to the top of the page
+Quote Post
cykcykacz
post 19.04.2013, 07:38:57
Post #7





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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?

Ten post edytował cykcykacz 18.04.2013, 14:08:24
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 05:19