0
votes

Ajoutez les points de joueur totaux en fonction de l'ID de joueur

Prenez le balisage suivant:

const points = [];

document.querySelectorAll('[data-player-id]').forEach((element) => {
  const player = {
    id: element.getAttribute('data-player-id'),
    points: element.getAttribute('data-points'),
  }

  // Combine all players with the same "id"

  points.push(player);
});


1 commentaires

Tandis que la boucle, rechercher points pour un objet avec le même lecteur.id comme element.getattribute ("Data-lecteur-id") ; S'il existe, Incrément Player.Points , sinon, créez et ajoutez un nouveau lecteur .


3 Réponses :


1
votes

Vous pouvez transformer votre variable code> points code> dans un objet au lieu d'une matrice et utilisez l'identifiant du lecteur comme clé. Ensuite, sur votre LOOP CODE> BOOP, vérifiez si la touche ID de lecteur existe déjà dans l'objet CODE> POINTS CODE>, et dans ce cas, résumer les points. Si cela n'existe pas, réglez-le sur les points de l'élément actuel.

const players = {};
for (const playerId in points) {
  players.push({ id: playerId, points: points[playerId] });
}


3 commentaires

Merci. Quand je dis "combiner les points totaux", je ne veux pas dire concatez les valeurs, mais les ajoutent tous ensemble


@Lodder j'ai mis à jour la réponse. Cela se produisait car les playpoints étaient une chaîne et nous devons la convertir en un numéro d'abord en utilisant parseint .


Je suis juste compris que parseint () était la seule chose qui reste. Merci pour ton aide



1
votes

Vous devrez rechercher l'objet avec l'ID de lecteur dans la matrice Points, si vous avez trouvé ajouter les points, appuyez sur un nouvel objet autrement:

p>

<div data-player-id="1" data-points="8">Player 1</div>
<div data-player-id="1" data-points="8">Player 1</div>
<div data-player-id="2" data-points="5">Player 2</div>
<div data-player-id="2" data-points="5">Player 2</div>
<div data-player-id="3" data-points="6">Player 3</div>


0 commentaires

1
votes

Vous pouvez utiliser Réduire Code> pour lequel vous pouvez fournir une valeur initiale. Ici, j'ai utilisé un objet pour que les identifiants du joueur soient les clés et que les valeurs de propriété sont les points. J'ai également utilisé la déstructuration de l'élément pour saisir l'identifiant et les valeurs des points de l'ensemble de données au lieu d'utiliser getattribute code>.

p>

<div data-player-id="1" data-points="8">Player 1</div>
<div data-player-id="1" data-points="8">Player 1</div>
<div data-player-id="2" data-points="5">Player 2</div>
<div data-player-id="2" data-points="5">Player 2</div>
<div data-player-id="3" data-points="6">Player 3</div>


1 commentaires

Légende! Merci beaucoup. J'ai vraiment besoin de comprendre quand utiliser réduire ()