J'ai un tableau d'objets comme: et je souhaite la dernière enregistrement de chaque utilisateur unique à la date de l'ex: p> en JavaScript. P> p>
3 Réponses :
Vérifiez la matrice de fin pour l'objet actuel p> Nom d'utilisateur code> et objet précédent nom d'utilisateur code>. S'ils sont les mêmes casser la boucle, sinon enfoncez dans le tableau. const input = [
{ id: 1, username: 'harry' ,weight:80,date:'2019-01-01'},
{ id: 2, username: 'harry' ,weight:84,date:'2019-02-21'},
{ id: 3, username: 'john' ,weight:80,date:'2019-03-11'},
{ id: 4, username: 'peter' ,weight:80,date:'2019-08-06'},
{ id: 5, username: 'peter' ,weight:80,date:'2019-06-11'},
{ id: 6, username: 'harry' ,weight:90,date:'2019-04-03'},
{ id: 7, username: 'john' ,weight:80,date:'2019-05-25'},
{ id: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
];
const output = [];
for(let i = input.length-1; i > 0; i--) {
if(input[i].username === input[i-1].username) {
break;
}
output.push(input[i]);
}
console.log(output.sort((a, b) => a.date.localeCompare(b.date.localeCompare)));
Je veux le résultat à la date de la date, la matrice n'est pas triée ..Veuillez vérifier la question, j'ai mis à jour
Ne pas obtenir le résultat attendu, où avez-vous triché la date de résultat sage dans la boucle.vous ne reçois pas ma question.Je ne veut pas seulement que les enregistrements d'utilisateurs uniques, mais aussi le dernier enregistrement de la date unique de la date de tri de l'utilisateur.
@ K - Je suppose que j'ai mal interprété votre question. Ainsi, fondamentalement, vous voulez tous les objets uniques et, en cas de double nom d'utilisateur, dernier objet que vous voulez. La plupart des solutions fournies donnent la production souhaitée.
Les cartes et les ensembles ne contiennent intrinsèquement que des valeurs uniques. Vous pouvez l'utiliser comme suit:
p>
var myMap = [
{ id: 1, username: 'harry' ,weight:80,date:'2019-01-01'},
{ id: 2, username: 'harry' ,weight:84,date:'2019-02-21'},
{ id: 3, username: 'john' ,weight:80,date:'2019-03-11'},
{ id: 4, username: 'peter' ,weight:80,date:'2019-08-06'},
{ id: 5, username: 'peter' ,weight:80,date:'2019-06-11'},
{ id: 6, username: 'harry' ,weight:90,date:'2019-04-03'},
{ id: 7, username: 'john' ,weight:80,date:'2019-05-25'},
{ id: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
]
var result = {};
for(i = 0; i < myMap.length; i++){
result[myMap[i]['username']] = myMap[i];
}
console.log(Object.values(result)); Vous pouvez prendre un Plan et obtenez les valeurs.
p>
.as-console-wrapper { max-height: 100% !important; top: 0; }
Comment avez-vous essayé de résoudre ce problème vous-même et de ce qui a mal tourné? Veuillez poster votre " exemple de reproductible minimal i>" Code.