Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Sziasztok,

    Valaki segítsen nekem megérteni JS-ben ez a .reduce() miért /hogyan működik:

    const users = [
      { name: 'John', age: 34 },
      { name: 'Amy', age: 20 },
      { name: 'camperCat', age: 10 }
    ];

    const usersObj = users.reduce((obj, user) => {
      obj[user.name] = user.age;
      return obj;
    }, {});
    console.log(usersObj);

    Pontosabban ez a része az amit nem bírok felfogni: obj[user.name] = user.age

    Ebből hogy jön ki a { John: 34, Amy: 20, camperCat: 10 } eredmény? o.O
    Elsőre én azt hinném, hogy mikor a reduce végig lépdel az objecteken a name-nek adná értékül az age értékét.

    Szóval miért nem {name: 34} az első lépés eredménye.
    Tudom, hogy én lenni buta, de az agyam nem képes ezt most felfogni. :( :(

    Talán igy érthetobb:

    const usersObj = users.reduce((obj, user) => {
    return {
    ...obj, // lemásolod az obj tartalmat
    [user.name]: user.age // 1. elemnel "John" 34, 2. elemnél "Amy": 20 stb.
    }
    }, {});

  • disy68
    aktív tag

    Sziasztok,

    Valaki segítsen nekem megérteni JS-ben ez a .reduce() miért /hogyan működik:

    const users = [
      { name: 'John', age: 34 },
      { name: 'Amy', age: 20 },
      { name: 'camperCat', age: 10 }
    ];

    const usersObj = users.reduce((obj, user) => {
      obj[user.name] = user.age;
      return obj;
    }, {});
    console.log(usersObj);

    Pontosabban ez a része az amit nem bírok felfogni: obj[user.name] = user.age

    Ebből hogy jön ki a { John: 34, Amy: 20, camperCat: 10 } eredmény? o.O
    Elsőre én azt hinném, hogy mikor a reduce végig lépdel az objecteken a name-nek adná értékül az age értékét.

    Szóval miért nem {name: 34} az első lépés eredménye.
    Tudom, hogy én lenni buta, de az agyam nem képes ezt most felfogni. :( :(

    A reduce eredménye egy darab érték, itt egy object.

    const usersObj = users.reduce((obj, user) => {
      obj[user.name] = user.age;
      return obj;
    }, {}); <- ez a kiindulási értéke: {} // üres object

    A reduce végigiterál a users tömbön. Minden iteráció megkapja az előző által módosított értéket (obj) és az adott elemet a listában (user).

    obj[user.name] = user.age;
    a fenti módosítja az eredmény objectet, ad neki egy property-t, aminek a neve a user.name lesz és az értéke a user.age

    0: {}
    1: {"John": 34}
    2: {"John": 34, "Amy": 20}
    etc..

    Érdemes lehet még elolvasni a dokumentációt hozzá.

Új hozzászólás Aktív témák