• 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

Object Storage Arubacloud
0 głosów
147 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,190 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,190 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,190 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 171 wizyt
pytanie zadane 3 maja 2017 w JavaScript przez Oskar Bergmann Nowicjusz (120 p.)
0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 13 sierpnia 2015 w JavaScript przez niezalogowany

92,615 zapytań

141,465 odpowiedzi

319,783 komentarzy

61,997 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...