Javascript for ... Object.entries loop 0
2021-04-25T04:58:38+02:00
2021-04-26T23:49:46+02:00
2022-08-19T02:17:02+02:00
*deleted_99318010
Sziasztok!

for (const [key, value] of Object.entries(json.data.chartSet).reverse() ) { hello.push(value); if (i === 0) { break; } };

Azt szeretném megoldani, hogy számolja le és ha az i 0, akkor legyen a breake és előtte a push.

Hova tegyem az i-t a for-ban, hogy elkezdjen 0-tól számolni?

Köszönöm a választ.
Mutasd a teljes hozzászólást!
Szerintem az entries() lesz a barátod:

for (const [i, [key, value]] of Object.entries(json.data.chartSet).reverse().entries() ) { hello.push(value); if (i === 0) { break; } };
Persze a példának nincs sok értelme, mert ha egyből az első (illetve igazából utolsó) elem után ki akarsz lépni a ciklusból, akkor mindegy ha beleindexelsz a tömbbe és kihagyod a ciklust.
Mutasd a teljes hozzászólást!

  • Pl. létrehozhatod a ciklus előtt 0 kezdőértékkel, majd a ciklusban (mondjuk a végén) növelheted az értékét 1-gyel.
    Mutasd a teljes hozzászólást!
  • Légy szíves magyarázd el hogy mit szeretnél csinálni. (Nem azt, hogy hogy szeretnéd befejezni a félig elkészült művedet, hanem hogy mi az eredeti célod ezzel. Szeretnéd egy tömbbe pakolni azt, ami a json.data.chartSet-ben van, csak fordítva? Vagy az első elemen kívül szeretnéd fordítva belerakni?)

    Ja és ne felejtsük el, hogy a for..of szép és jó, de attól még a hagyományos for ciklus is benne maradt a nyelvben. Ha fordítva akarsz végigjárni valamit, akkor indíthatsz egy for ciklust (valami.length-1)-től nulláig lefelé számolva. Lehet olvashatóbb lesz a végeredmény, attól függően hogy mit szeretnél elérni.
    Mutasd a teljes hozzászólást!
  • Nem tiszta, hogy mit is akarsz, mert ha az utolsó elem értékét akarod berakni akkor nem kell ciklus, ami általában amúgy se kell js-ben, mert map, find, filter, reduce - al helyettesítheted. Főleg nem praktikus egy ciklus közepén feltölteni egy tömböt, sokkal jobb létrehozni egy újat.

    const hello = Object.entriesObject .entries(json.data.chartSet) .reverse() .reduce( (arr, [key, value]) => [...arr, value] ,[]); // utolsó elem const lastValueArray = Object.entriesObject.values(json.data.chartSet).slice(-1); // 1 elemű tömböt kapsz vissza const [lastValue] = Object.entriesObject.values(json.data.chartSet).slice(-1); ha direct az érték kell
    Mutasd a teljes hozzászólást!
  • Azt szeretnem, hogy az i az 0,1, 2 stb legyen. Mint egy sima for vagy forEach ben :) 

    Ebben van key es value, de nincs i
    Mutasd a teljes hozzászólást!
  • Szerintem az entries() lesz a barátod:

    for (const [i, [key, value]] of Object.entries(json.data.chartSet).reverse().entries() ) { hello.push(value); if (i === 0) { break; } };
    Persze a példának nincs sok értelme, mert ha egyből az első (illetve igazából utolsó) elem után ki akarsz lépni a ciklusból, akkor mindegy ha beleindexelsz a tömbbe és kihagyod a ciklust.
    Mutasd a teljes hozzászólást!
  • Wow, köszi :)
    Mutasd a teljes hozzászólást!
abcd