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

  • _ak_

    addikt

    Előre is elnézést az auto-correctes felig ékezetes, felig magyar, felig angol kommentert.

    Mivel magamtol nem jöttem ra ezért osszelegoztam a megoldást, ti ezt értitek? Úgy érzem, hogy feleslegesen toltam túl a dolgot:

    const onlySelectable = allOptions
      ?.filter((e: { etype: string }) => e === 'SELECTABLE')
      .map(({ eorder, eid }) => ({ eorder, eid }));

    const filterAndAddOrderNum = (
      selectionHistory: { eid: string, selectedOption: string }[],
     onlySelectable: { eorder: number; eid: string }[]
    ) => {
      const map = new Map();
      const filteredSelectionHistory = selectionHistory?.selections?.filter(({ eid: id1 }) =>
       onlySelectable.some(({ eid: id2 }) => id1 === id2)
      );
     filteredSelectionHistory.forEach((item) => map.set(item.eid, item));
     onlySelectable.forEach((item) =>
        map.set(item.eid, { ...map.get(item.eid), ...item })
      );

      return Array.from(map.values());
    };


    Lényegében van egy forrás JSON ami mindig a friss adatokat tartalmazza, az eorder változhat es nekem az alapján kell sorrendben megjelentetni az adatokat, illetve van egy history JSON ahol eddig csak az id es a user opciója volt elmentve. A feladat, hogy miután megkaptam a forrást es a history-t szinkronizáljam azokat. Tehát a redux state-ben a history-bol kinyert eid-hoz csatoljam eorder-t, igy a frissen megjelenített adatok es a history-bol jövő adatok is szinkronban lennének, mert időközben a sorrend es a tartalom is változhat. Az esetleg (user által) ujra elküldött adatoknak is tukrozniuk kell a forrásban történt változást.

    Nem feltétlen 1 liner megoldást keresek sõt, de egy másod véleménynek örülnék, hogy lehet-e ezt egyszerűbben is.

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