-1
votes

Comment obtenir les derniers enregistrements de noms d'utilisateur uniques à partir d'un tableau dans le script Java

J'ai un tableau d'objets comme: xxx

et je souhaite la dernière enregistrement de chaque utilisateur unique à la date de l'ex: xxx

en JavaScript.


1 commentaires

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 " Code.


3 Réponses :


0
votes

Vérifiez la matrice de fin pour l'objet actuel 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.

p>

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)));


3 commentaires

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.



0
votes

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));


0 commentaires

2
votes

Vous pouvez prendre un Plan et obtenez les valeurs.

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


0 commentaires