Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]sprawdzenie ilości powtórzeń z tablicy
Forum PHP.pl > Forum > Przedszkole
olszam
mam pewną tablicę
  1. var newparts = [
  2. [1,5,6], // - index 0
  3. [0,5,6], //- index 1
  4. [4,5], //- index 2
  5. [5], //- index 3
  6. [2,5], //- index 4
  7. [0,1,2,3,4,6], //- index 5
  8. [0,1,5] //- index 6
  9. ]

Można powiedzieć że liczby to indexy które zawierają w sobie daną grupę przedziału liczb coś jak na osi liczbowej od-do np. mamy index 0 czyli to jest jakiś przedział od-do a 1,5,6 to też są przedziały od-do tylko że zawarte są w przedziale grupy 0.
Więc dla indeksu 0,1,6 będą 4 powtórzenia bo mają tyle samo liczb i takie same liczby ale dla indexu np. 5 będzie 0 powtórzeń bo ma za dużo liczb a musi być większa lub równa od sprawdzanego indexu. Więc powiedzmy mamy taki efekt na końcu:
  1. var newparts = [
  2. [1,5,6], // - index 0, powtórzeń 4
  3. [0,5,6], //- index 1, powtórzeń 4
  4. [4,5], //- index 2, powtórzeń 3
  5. [5], //- index 3, powtórzeń 2
  6. [2,5], //- index 4 powtórzeń 4
  7. [0,1,2,3,4,6], //- index 5, powtórzeń 0
  8. [0,1,5] //- index 6, powtórzeń 4
  9. ]


można chyba w sumie jeszcze dodać numery indeksów na końcu bo w sumie na to samo wyjdzie chociaż i tak próbowałem i nie wychodzi mi niestety sad.gif

  1. var newparts = [
  2. [1,5,6,0], // - index 0, powtórzeń 4
  3. [0,5,6,1], //- index 1, powtórzeń 4
  4. [4,5,2], //- index 2, powtórzeń 3
  5. [5,3], //- index 3, powtórzeń 2
  6. [2,5,4], //- index 4 powtórzeń 4
  7. [0,1,2,3,4,6,5], //- index 5, powtórzeń 0
  8. [0,1,5,6] //- index 6, powtórzeń 4
  9. ]







  1. for(var i =0; i<newparts.length; i++){
  2. var count = 0, count2 = 0;
  3. for(var j =0; j<newparts.length; j++){
  4. if((newparts[i].length <= newparts[j].length) && (newparts[i] != newparts[j])){
  5. for(var k = 0; k<newparts[i].length; k++){
  6. // console.log(i+': '+newparts[i][k])
  7. if(jQuery.inArray(newparts[i][k], newparts[j]) != -1){
  8. //count+=1;
  9. console.log(i+': '+newparts[i][k])
  10. }
  11. }
  12. // if(newparts[i].length == count){
  13. // document.write(newparts[i].length+'='+count+'<br>');
  14. // }
  15.  
  16. }
  17. }
  18.  
  19. }


Gdyby w inArray mógłbym dać tablicę wartosci zamiast bawić się z pętlami to może by łatwiej jakoś mi poszło.
Tomplus
Nie wiem do czego to potrzebujesz, ale może warto przemyśleć tworzenie tablic?

Pomyśl jak powinina wyglądać wynikowa tablica.
olszam
Wynikowa tablica to po prostu te powtórzenia więc tu nawet w console.logu mi wystarczy jak będzie. Na podstawie tej trzeciej tablicy próbuje wyniki porównać. Robię pierwszą pętlę for i potem druga taką samą, następnie sprawdzam czy warunek się zgadza (newparts[i].length <= newparts[j].length) && (newparts[i] != newparts[j]) długość tablicy ma być mniejsza lub równa i nie może być to ta sama tablica powiedzmy newparts[0] (dla i) musi być różny od newparts[0] (dla j). No i trzeci for, który sprawdzi czy liczby z np. newparts[0] (dla i) będą się znajdywać w newparts[j]. Niestety tą trzecią pętlę musiałem zrobić bo durny jQuery.inArray nie obsłuży mi tablicy tylko jedną wartość ale i tak źle wychodzi mimo wszystko. Na końcu daje county by sprawdzał czy ilość sprawdzonych i potwierdzonych istniejących liczb zgadza się z długością tablicy newparts[i]. i jeśli tak to dodaje +1. Chyba tu nie dopisałem tego z countami dokładniej bo cofając skrypt i dalszym kombinowaniem nadal nie zwracało mi tego co trzeba.
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.