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

Javascript tablica dwuwymiarowa - tworzenie za pomocą pętli

VPS Starter Arubacloud
+2 głosów
1,168 wizyt
pytanie zadane 29 marca 2022 w JavaScript przez kolusnk Początkujący (310 p.)

Witam, chciałbym stworzyć i wyświetlić w konsoli tablicę wielowymiarową zawierającą 3 wiersze i 3 kolumny :

[ '1 x 1 = 1 | ', '1 x 2 = 2 | ', '1 x 1 = 3 | ' ],
[ '2 x 1 = 2 | ', '2 x 2 = 4 | ', '2 x 3 = 6 | ' ],
[ '3 x 1 = 3 | ', '3 x 2 = 6 | ', '3 x 3 = 9 | ' ]

Zadanie muszę wykonać używając pętli for, więc mój napisałem kod w ten sposób:

const n = 3;
const calc = [];

let liczba = "1";

for (let i = 0; i < n; i++) {
    calc[i] = [];
}
for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
        calc[i][j] = liczba + ' x ' + liczba + ' = ' + liczba + " | ";
    }
}

console.log(calc);

Niestety wynik mojego kodu jest inny niż zamierzony i wygląda tak: 

[ '1 x 1 = 1 | ', '1 x 1 = 1 | ', '1 x 1 = 1 | ' ],
[ '1 x 1 = 1 | ', '1 x 1 = 1 | ', '1 x 1 = 1 | ' ],
[ '1 x 1 = 1 | ', '1 x 1 = 1 | ', '1 x 1 = 1 | ' ]

Co powinienem zmienić żeby uzyskać pożądany efekt, nie wiem gdzie robię błąd i już się trochę w tym pogubiłem. Będę wdzięczny za wskazówki.

1 odpowiedź

+2 głosów
odpowiedź 29 marca 2022 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 29 marca 2022 przez kolusnk
 
Najlepsza

Skup się na tej linii:

calc[i][j] = liczba + ' x ' + liczba + ' = ' + liczba + " | ";

Wypisujesz w niej zmienną liczba, której wartości nigdzie nie zmieniasz - stąd wynikowo wszędzie jest 1. Potrzebujesz natomiast podstawić w jej miejsca kolejno:

  1. zmienną reprezentującą licznik (iterator) pętli zewnętrznej,
  2. zmienną reprezentującą licznik pętli wewnętrznej,
  3. iloczyn wartości tych liczników.

Weź też pod uwagę, że liczniki w Twoich pętlach zaczynają się od 0. Potrzebujesz więc odpowiednio "kompensować" ich wartości przy podstawianiu i liczeniu iloczynu.

1
komentarz 29 marca 2022 przez kolusnk Początkujący (310 p.)
calc[i][j] = (i + 1) + " x " + (j + 1) + " = " + (i + 1) * (j + 1);

Dziękuję, bardzo fajnie wytłumaczyłeś. Posłuchałem Twoich instrukcji i pomogło. Metodą prób i błędów udało mi się chyba zrozumieć zasadę działania. 

1
komentarz 29 marca 2022 przez ScriptyChris Mędrzec (190,190 p.)

Żeby kod był łatwiejszy w zrozumieniu, możesz czytelniej nazwać zmienne i skorzystać z template literal, zamiast kleić string operatorem plusa, np.:

const n = 3;
const calc = [];
 
let liczba = "1";
 
for (let i = 0; i < n; i++) {
    calc[i] = [];
}

for (let i = 0; i < n; i++) {
    const leftMultiplicative = i + 1;

    for (let j = 0; j < n; j++) {
        const rightMultiplicative = j + 1;
        const multipliedValue = leftMultiplicative * rightMultiplicative;

        calc[i][j] = `${leftMultiplicative} x ${rightMultiplicative} = ${multipliedValue} | `;
    }
}
 
console.log(calc);

 

1
komentarz 30 marca 2022 przez VBService Ekspert (251,210 p.)
edycja 30 marca 2022 przez VBService

wink

const n = 3;
const calc = Array(n).fill().map(_ => Array(n).fill());
  
for (let i=1; i<=n; i++)
    for (let j=1; j<=n; j++) 
        calc[(i-1)][(j-1)] = `${i} x ${j} = ${(i * j)} | `;
   
console.log(calc);

lub

const n = 3;
const calc = Array(n).fill().map(_ => Array(n).fill());
 
for (let i=1, r=0; r<n; i++, r++)
    for (let j=1, c=0; c<n; j++, c++) 
        calc[r][c] = `${i} x ${j} = ${(i * j)} | `;
  
console.log(calc);

 

Podobne pytania

0 głosów
2 odpowiedzi 942 wizyt
0 głosów
1 odpowiedź 356 wizyt
pytanie zadane 3 maja 2018 w JavaScript przez Jake Obywatel (1,820 p.)
0 głosów
0 odpowiedzi 310 wizyt

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...