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

Dlaczego tablica mnożona jest od połowy?

Cloud VPS
0 głosów
321 wizyt
pytanie zadane 28 września 2022 w JavaScript przez CYG4N Nowicjusz (240 p.)

Dlaczego poniższy kod zwraca [1, 1, 1, 1, 16, 32, 64, 128] zamiast [1, 2, 4, 8, 16, 32, 64, 128]

const x = Array(8).fill(1);

const xpos = Array(8).fill(0);

for (let i = 0; i < x.length; i++) {
    xpos[x.length - 1 - i] = Number(x[i]);
    xpos[i] = Math.pow(xpos[i] * 2, [i]);
  }
console.log(xpos) // [1, 1, 1, 1, 16, 32, 64, 128]

 

2 odpowiedzi

0 głosów
odpowiedź 28 września 2022 przez Ehlert Ekspert (215,050 p.)

Proponuję poprzypisywać wartości które nadajesz oraz wartości indeksów do osobnych zmiennych i korzystając z instrukcji debugger samemu przejść przez problem i znaleźć rozwiązanie. wink​​​​​​

0 głosów
odpowiedź 29 września 2022 przez Nudzi mi się Gaduła (4,460 p.)

te liczby które chcesz uzyskać to 2^n więc można znacznie uprościć to rozwiązanie:

xpow = [];
for (i = 0; i < 8; i++) {
  let pow = Math.pow(2, i);
  xpow.push(pow);
}
console.log(xpow);

lub poprawiając twoje rozwiązanie:

const x = Array(8).fill(1);
const xpos = Array(8).fill(1);
 
for (let i = 0; i < x.length; i++) {
    xpos[i] = Math.pow(xpos[i] * 2, [i]);
  }
console.log(xpos);

kopiujesz 1 z x do xpos od końca do początku, dlatego nadpisujesz wyliczone już wartości.

komentarz 29 września 2022 przez ScriptyChris Mędrzec (190,190 p.)

Zamiast Math.pow można użyć operatora potęgowania **.

komentarz 29 września 2022 przez VBService Ekspert (256,600 p.)

i użyć np. map

Create Array and fill with index ...

 

const xpos = Array(8).fill().map((_, i) => (2 ** i));
console.log(xpos);

Podobne pytania

0 głosów
0 odpowiedzi 119 wizyt
pytanie zadane 8 kwietnia 2019 w OpenGL, Unity przez Yashe Dyskutant (7,720 p.)
0 głosów
2 odpowiedzi 295 wizyt
0 głosów
2 odpowiedzi 1,591 wizyt
pytanie zadane 15 lutego 2018 w C i C++ przez Baśka Nowicjusz (150 p.)

93,466 zapytań

142,459 odpowiedzi

322,732 komentarzy

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

Kursy INF.02 i INF.03
...