Je suis coincé à boucler à travers un objet appelé L'objet ressemble à ceci: p> Voici comment je veux que ma sortie ressemble à p> lecteurs code> contenant des données de lecteur. Je veux vérifier quel joueur possède la valeur la plus élevée x code> et enregistrez-la dans leader code> la variable qui changera lorsqu'un autre joueur dispose d'une valeur supérieure code> x code>.
3 Réponses :
Veuillez utiliser objet.Keys
p>
var players = {
'86wjIB7Xbz1tmwlTAAAB': {
rotation: 0.09999999999999964,
x: 579,
y: 579,
playerId: '86wjIB7Xbz1tmwlTAAAB'
},
dWwtnOI8PryXJNDWAAAC: {
rotation: 0.09999999999999964,
x: 488,
y: 579,
playerId: 'dWwtnOI8PryXJNDWAAAC'
},
'GZPYpWdrzj9x0-SsAAAD': {
rotation: -0.09999999999999964,
x: 694,
y: 579,
playerId: 'GZPYpWdrzj9x0-SsAAAD'
}
}
const leader = Object.keys(players).reduce((acc, cur) => {
const obj = players[cur];
return acc.x < obj.x ? { x:obj.x, leader: obj.playerId } : acc;
}, { x: 0, leader: "" });
console.log(leader);Il peut être fait en dessous du code suivant:
p>
let data= {
'86wjIB7Xbz1tmwlTAAAB': {
rotation: 0.09999999999999964,
x: 579,
y: 579,
playerId: '86wjIB7Xbz1tmwlTAAAB'
},
'dWwtnOI8PryXJNDWAAAC': {
rotation: 0.09999999999999964,
x: 488,
y: 579,
playerId: 'dWwtnOI8PryXJNDWAAAC'
},
'GZPYpWdrzj9x0-SsAAAD': {
rotation: -0.09999999999999964,
x: 694,
y: 579,
playerId: 'GZPYpWdrzj9x0-SsAAAD'
}
}
let max = 0;
let keyParent;
let keys = Object.keys(data)
for (var i = 0; i < keys.length; i++){
if (data[keys[i]].x > max) {
max = data[keys[i]].x
keyParent = keys[i]
}
}
console.log(keyParent)Il y a quelques façons de le faire. Jay a déjà une bonne réponse, mais voici un autre, avec quelques points de plus:
Nous commençons avec vos données: p> maintenant, notre premier objectif est de tourner Cet objet dans une collection d'objets - une matrice que nous pouvons opérer sur. p> Le moyen le plus simple est de saisir les "touches" (noms de propriété) pour l'objet: p> const playersObj = {
'86wjIB7Xbz1tmwlTAAAB': {
rotation: 0.09999999999999964,
x: 579,
y: 579,
playerId: '86wjIB7Xbz1tmwlTAAAB',
},
'dWwtnOI8PryXJNDWAAAC': {
rotation: 0.09999999999999964,
x: 488,
y: 579,
playerId: 'dWwtnOI8PryXJNDWAAAC',
},
'GZPYpWdrzj9x0-SsAAAD': {
rotation: -0.09999999999999964,
x: 694,
y: 579,
playerId: 'GZPYpWdrzj9x0-SsAAAD',
},
};
// turn players into a collection
const players = Object.values(playersObj);
const leaderId = players.sort((a, b) => b.x - a.x)[0].playerId;
console.log(`Leader: ${leaderId}`);
C'est une excellente solution! Vous pouvez également utiliser objet.values code> pour obtenir les valeurs de propriété comme une matrice.
Oui, j'ai manqué de remarquer que les clés et les playerids sont les mêmes.
Quoi spécifiquement avez-vous des problèmes? Il n'y a pas beaucoup de façons de itérer sur un objet et aucun d'entre eux ne dépend de la structure réelle des objets. Est-ce que cela aide: Comment itérer sur un objet JavaScript?
Ou vous pouvez simplement itérer
objet.keys (YourObject) code>