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

question-closed Źle stworzone tablice?

Object Storage Arubacloud
0 głosów
152 wizyt
pytanie zadane 19 marca 2017 w JavaScript przez Muhin Gaduła (4,120 p.)
zamknięte 19 marca 2017 przez Muhin

Witam,

logic(){
		this.tilesArray = [256];
		this.arrayNr = 0;
		for(let i = 0; i < 16; i++){
			for(let j = 0; j < 16; j++){
				this.arrayNr ++;
				this.text = this.mapa[1][1];
				switch(this.text.charAt(j)){
					case ' ' : 
						this.mx += 32;
						this.tilesArray[this.arrayNr][this.g.tile, this.mx, this.my];
					break;
					case 'c' : 
						
					break;
				}
				//this.mx = 0;
				this.my += 32;
			}
		}
	}

Nie wiem dlaczego po uruchomieniu tego kodu jest wyrzucany błąd:

TypeError: this.tilesArray[this.arrayNr] is undefined

Kod ma zrobić 256 tablic, później w pętli do tych tablic po kolei są wrzucane kolejno: grafika, x, y. Wie ktoś co zrobiłem źle?

komentarz zamknięcia: Problem rozwiązano.

2 odpowiedzi

0 głosów
odpowiedź 19 marca 2017 przez xmentor Nałogowiec (49,520 p.)
wybrane 19 marca 2017 przez Muhin
 
Najlepsza
this.tilesArray = [256];

Stworzyłeś tablice, która ma jeden element o wartości 256

komentarz 19 marca 2017 przez Muhin Gaduła (4,120 p.)
To jak mam stworzyć to prawidłowo? Pętlą? Czy po kolei robić 256 tablic, chociaż nie wiem czy to ma sens.
komentarz 19 marca 2017 przez xmentor Nałogowiec (49,520 p.)
komentarz 19 marca 2017 przez Muhin Gaduła (4,120 p.)
Myślałem nad tym, ale to rozwala trochę moją koncepcję, bo w tedy to będzie wyglądać tak:

tablica = ["1", "2", "3", "4", "5", "6"]

a mój zamysł jest taki:

tablica[1] = ["1", "2", "3"]

tablica[2] = ["4", "5", "6"]
komentarz 19 marca 2017 przez xmentor Nałogowiec (49,520 p.)

Możesz użyć obiektu:

var arr = [];
arr.push({
  tile: mTile,
  x: mx,
  y: my
});
komentarz 19 marca 2017 przez Muhin Gaduła (4,120 p.)
Nawet nie wiedziałem, że można tego  użyć w ten sposób. Dzięki.
+1 głos
odpowiedź 19 marca 2017 przez niezalogowany
Pomijasz zerowe miejsce w tablicy, ponieważ inkrementujesz "this.arrayNr" przed przypisaniem czegokolwiek do tablicy a ostatnie miejsce określane przez "this.arrayNr" nie istnieje.
komentarz 19 marca 2017 przez Muhin Gaduła (4,120 p.)
Niestety nic to nie zmienia.
komentarz 19 marca 2017 przez niezalogowany

Tak jak napisałeś, źle stworzona tablica. Aktualnie ma jeden element o wartości 256.

this.tilesArray = new Array(256);

 

1
komentarz 19 marca 2017 przez kap Stary wyjadacz (11,620 p.)
W większości przypadków nie ma sensu w JS deklarować z góry wielkości tablicy.

Podobne pytania

0 głosów
5 odpowiedzi 281 wizyt
0 głosów
1 odpowiedź 499 wizyt
pytanie zadane 19 kwietnia 2020 w JavaScript przez kubaa322 Użytkownik (710 p.)
0 głosów
1 odpowiedź 5,439 wizyt
pytanie zadane 8 listopada 2016 w JavaScript przez MatiiTv Gaduła (3,790 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...