0
votes

Array de filtre à l'enregistrement du produit pour les événements

J'ai un flux d'activité, il contient un certain nombre de types d'activité différents pour notre site.

Un type d'activité est à la vérification. quels journaux lorsqu'un utilisateur vérifie et les cutteries d'un site. p>

Les entrées d'enregistrement ressemblent à p> xxx pré>

ce que je veux faire est de créer un tableau avec des entrées dedans comme p> xxx pré>

jusqu'à présent ce que j'ai est p> xxx pré>

qui donne p>

checkinRecord[val.entryable_id] =  {clockedOut: val.created_at}


2 commentaires

Essayez-vous simplement d'ajouter des objets au tableau Checkinrecord ou de les mettre à jour si elles existent déjà?


Lorsque vous remplissez votre matrice de chantCheckins, vous voudrez peut-être utiliser Array.filter comme ceci: StaffCheckins = this.diarystore.tries.filter (Val => Val.Entryable_type === 'Checkin')


3 Réponses :


1
votes

Vous devez fusionner l'attribut, au lieu d'assigner à un nouvel objet xxx


0 commentaires

0
votes

Je n'ai donc pas eu de tester parce que je suis dehors et que vous pourriez essayer quelque chose comme ça. Si elles objectent entraable_id code> n'existent pas dans l'objet actuel de la matrice, il créera un nouvel objet avec les membres, sinon il trouvera l'objet et mettra à jour les champs

{
    let staffCheckins = [];
    let checkinRecord = [];

    if (this.DiaryStore.entries.length) {
        staffCheckins = this.DiaryStore.filter(val => val.entryable_type.toLowerCase() === 'checkin');
    }

    staffCheckins.forEach(function(val, i) {
        let { action, entryable_id, created_at, user } = val;

        if (!entryable_id in checkinRecord[i]) {
            checkinRecord[i] = {
                clockedIn: created_at,
                clockedOut: created_at,
                user
            }
        }

        if (action.toLowerCase() === 'clockedin') {
            checkinRecord[i] = {
                ...checkinRecord[i],
                clockedIn: created_at,
                user
            }
        } else if (action.toLowerCase() === 'clockedout') {
            checkinRecord[i] = {
                ...checkinRecord[i],
                clockedOut: created_at
            }
        }
    });
}


0 commentaires

0
votes

Vous pouvez faire toute cette opération dans un filtre Réduire la combinaison et créer un objet de groupeBy à l'aide du Entryable_id code> comme touches.

Une fois la boucle terminée, obtenez des valeurs de cet objet P>

p>

<script>
  const data = [{
      Entryable_id: 1,
      Entry_type: 'Ticket',
      Action: 'Update',
      timestamp: '12:01'
    },
    {
      Entryable_id: 3,
      Entry_type: 'Ticket',
      Action: 'New',
      timestamp: '12:07'
    },
    {
      Entryable_id: 4,
      Entry_type: 'CheckIn',
      Action: 'ClockedIn',
      timestamp: '14:30'
    },
    {
      Entryable_id: 4,
      Entry_type: 'CheckIn',
      Action: 'ClockedOut',
      timestamp: '17:30'
    }
  ]
</script>


0 commentaires