• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z argumentami i tablice jQuery

0 głosów
335 wizyt
pytanie zadane 3 stycznia 2016 w JavaScript przez shadax Obywatel (1,850 p.)

Cześć, w JS i jQuery dopiero raczkuje, więc mój błąd może wydawać się oczywisty, ale nigdzie nie mogłem znaleźć odpowiedzi jak go naprawić... Oto mój kod:

var array=[];
var zero = 0;
var jeden = 0;
var dwa = 0;

$("td").each(function(){

		array.push($(this).text()); //Tutaj wrzucam całą tabelę z HTML w tablicę? (nie wiem jak to nazwać, chodzi mi o array)
		
		if($(this).text() == 0){
		var zero = zero + 1;
		alert(zero);
		}

		if($(this).text() == 1){
		var czerwone = czerwone + 1;
		}
		
		if($(this).text() == 2){
		var czarne = czarne + 1;
		}
		
		document.getElementById("wynik").innerHTML =
		"Zero: " + zero + " Jeden: " + jeden + " Dwa: " + dwa;
});

 

Mam tabelę w HTML z komórkami o wartościach 0, 1 i 2, chciałem zrobić zmienne, które policzyłyby ile jest zer, jedynek i dwójek, jednak w tym kodzie jedyne wartości, które się wyświetlają to undefined lub NaN, a jeżeli zdefiniuję argument w środku tej funkcji each, to wszystko działa, tyle, że ta wartość ma najpierw 0, potem 1, potem znowu 0 itd. (co jest logiczne, bo z każdą następną pętlą, argument jest definiowany jako 0. No i to jest mój pierwszy problem.

 

Drugim problemem jest to, jak mogę obliczyć, ile np. razy pod rząd były trzy zera, np. w takim ciągu [1], [0], [0], [0], [2], dostałem wcześniej poradę, żeby to wrzucić w 3 tablice, osobne dla każdej cyfry, ale jak to zrobić, żeby numery? tych liczb pozostały takie samy, bo w tablicy mamy wartości 0, 1 ,2, 3, 4 itd. To czy jak przerzucę to na 3 tablice, to czy przykładowo 0 o numerze? 5, po przeniesieniu będzie zerem o numerze 0 czy o numerze 5?

 

Z góry dziękuje za dopowiedź ;)

1 odpowiedź

+1 głos
odpowiedź 3 stycznia 2016 przez ScriptyChris Mędrzec (190,170 p.)
wybrane 4 stycznia 2016 przez shadax
 
Najlepsza

Czy próbowałeś w if stosować potrójny znak równości "==="?

Drugim problemem jest to, jak mogę obliczyć, ile np. razy pod rząd były trzy zera, np. w takim ciągu [1], [0], [0], [0], [2], 

Np. tak:

If (arr[i] == 0)
{  counter++; }

Zliczasz sobie wystąpienia danej liczby w tablicy poprzez inkrementacje licznika (counter). Gdy zliczysz, to wyświetlasz.

Możesz tego if zrobić dla kilku tablic i po prostu stawiać warunek if ( jakasTablica[i] == jakasLiczba) { counter++;}

 żeby to wrzucić w 3 tablice, osobne dla każdej cyfry, ale jak to zrobić, żeby numery? tych liczb pozostały takie samy,

Zapisujesz sobie indeks danego elementu tablicy do jakiejś zmiennej, później poprzez tą zmienną (np. będzie to 1, czyli pierwszy indeks tablicy - w poniższym przykładzie "pies" - z której coś brałeś/sprawdzałeś) wprowadzasz do nowej tablicy inną liczbę lub wartość, czyli np.:

var tablica = ['kot', 'pies', 'dom'];  // [0] = 'kot', [1] = 'pies', [2] = 'dom'

var bufor = 0;

var nowaTablica = [];

for (var i = 0; i < tablica.length; i++)
{
   if (i == 1)   // czyli "pies" w tablicy "tablica[]"
  {
       bufor = i;    //do bufora wsadzasz wartosc indeksu tablicy, czyli teraz jest to 1
   }
}

nowaTablica [bufor] = 'cokolwiek';     // do tablicy "nowaTablica[]" pod indeksem 1 umieszczasz 'cokolwiek'. Bufor posluzyl Ci do przechowania indeksu starej tablicy "tablica[]"

 

komentarz 3 stycznia 2016 przez shadax Obywatel (1,850 p.)
Dzięki za odpowiedź. Teraz jestem na telefonie, ale nie wiem czy to ja źle sobie interpretuje ten kod czy nie zrozumiałes mnie, co chciałem zrobić. Ogólnie to mam ponad 100 tyś. tych cyfr i chcę policzyć ile razy w ciągu wystąpiło jedno zero, ile razy wystąpiły dwa zera pod rząd, trzy zera itd. A jeżeli dobrze myślę, to Twoim kodem obliczę ile zer jest w całym ciągu, chociaż nie jestem tego pewien, bo jak pisałem, z JS i jQuery mam małe doświadczenie
komentarz 3 stycznia 2016 przez ScriptyChris Mędrzec (190,170 p.)

Jak wygląda ten ciąg cyfr? Czy jest to tablica wyglądająca np. tak?

var tablica = [0,0,111,000000, 0 ,2, 222222,11, 0000];

Drugim problemem jest to, jak mogę obliczyć, ile np. razy pod rząd były trzy zera, np. w takim ciągu [1], [0], [0], [0], [2],

Bo ciąg, który opisałeś [1], [0], [0], [0], [2], wygląda jak ciąg pojedynczych elementów z tablic(y). Napisz dokładnie jak przechowujesz te ciągi.

komentarz 3 stycznia 2016 przez Magicone Nałogowiec (45,100 p.)
Zaczynając liczby od 0 automatycznie przechodzisz w zapis ósemkowy (o ile żadna z cyfr nie przekracza 8), więc nie dziwcie się, że 071 to tak naprawdę liczba dziesiątkowa 57 :vvv
komentarz 4 stycznia 2016 przez shadax Obywatel (1,850 p.)
Przepraszam, mój błąd. To wygląda tak: [0, 1, 1, 0, 2, 2, 2, 1, 2, 1, 0, 2, 0, 0, 1, 0 itd.] (Tzn. Wszystko jest w jednej tablicy, a każdy indeks zawiera jedną cyfrę) Czyli wygląda to chyba tak: [0] = 0, [1] = 1, [2] = 1, [3] = 0, [4] = 2 itd. Więc widocznie musiało mi się coś pomylić i napisalem jak napisałem :/
komentarz 4 stycznia 2016 przez ScriptyChris Mędrzec (190,170 p.)
edycja 4 stycznia 2016 przez ScriptyChris

To może taka funkcja licząca ilość wystąpień wraz z "wykrywaniem" indeksu tablicy, w którym wystąpiła poszukiwana liczba... z resztą sam zobacz i potestuj czy tego szukasz:

var tablica = [0,1,0,1,1,2,2,0,0,3,0,0,1,2,1,2,2,0,1,1];
 
var nrIndeksu = '';
var liczbaWystapien = 0;
var obj = {};

function liczPowtorzenia(cyfra)
{
    for (var i = 0; i < tablica.length; i++)
    {
      if (tablica[i] === cyfra)
      {
        liczbaWystapien++;
        nrIndeksu += i + ', ';
       }
    }
	obj[liczbaWystapien] = nrIndeksu;
    return obj;
}
console.log('WYNIK ',liczPowtorzenia(2)); // WYNIK  Object {5: "5, 6, 13, 15, 16, "}

[edit]

Poprawka kosmetyczna, żeby nie było w wyniku na końcu (po liczbie 16 w "moim" wyniku) przecinka z apostrofem:  , '' 

Wstaw do pętli drugi if

if (i == tablica.length-1)
{
    nrIndeksu = nrIndeksu.slice(0,nrIndeksu.length-2);	
}

Usunie to ostatnie 2 znaki w stringu :)

Podobne pytania

0 głosów
0 odpowiedzi 344 wizyt
pytanie zadane 3 maja 2017 w JavaScript przez Oskar Bergmann Nowicjusz (120 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 13 sierpnia 2015 w JavaScript przez niezalogowany

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,368 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...