• 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?

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
138 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 (210,490 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,380 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 (242,470 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 90 wizyt
pytanie zadane 8 kwietnia 2019 w OpenGL, Unity przez Yashe Dyskutant (7,720 p.)
0 głosów
2 odpowiedzi 166 wizyt
0 głosów
2 odpowiedzi 1,161 wizyt
pytanie zadane 15 lutego 2018 w C i C++ przez Baśka Nowicjusz (150 p.)

91,847 zapytań

140,523 odpowiedzi

317,030 komentarzy

61,170 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...