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);
});
3 Réponses :
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] });
}
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 code>.
Je suis juste compris que parseint () code> était la seule chose qui reste. Merci pour ton aide
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>
Vous pouvez utiliser p> 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>. <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>
Légende! Merci beaucoup. J'ai vraiment besoin de comprendre quand utiliser réduire () code>
Tandis que la boucle, rechercher
points code> pour un objet avec le mêmelecteur.id code> commeelement.getattribute ("Data-lecteur-id") code>; S'il existe, IncrémentPlayer.Points Code>, sinon, créez et ajoutez un nouveau lecteurcode>.