• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
1,491 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 (255,840 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 1,004 wizyt
0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 3 maja 2018 w JavaScript przez Jake Obywatel (1,820 p.)
0 głosów
0 odpowiedzi 326 wizyt

93,103 zapytań

142,079 odpowiedzi

321,584 komentarzy

62,445 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...