Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]sprawdzenie ilości powtórzeń z tablicy
olszam
post 11.10.2016, 23:24:14
Post #1





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


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.
Go to the top of the page
+Quote Post
Tomplus
post 12.10.2016, 07:48:58
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie wiem do czego to potrzebujesz, ale może warto przemyśleć tworzenie tablic?

Pomyśl jak powinina wyglądać wynikowa tablica.
Go to the top of the page
+Quote Post
olszam
post 12.10.2016, 16:04:02
Post #3





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


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.
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: 5.06.2025 - 20:48