Javascript 如何在java脚本中从数组中获取唯一用户名的最后记录

Javascript 如何在java脚本中从数组中获取唯一用户名的最后记录,javascript,react-native,Javascript,React Native,我有一组对象,如: [ { id: 8, username: 'peter' ,weight:80,date:'2019-10-14'}, { 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: 8, username: 'peter' ,weight:80,date:'2019-10-14'},
 { 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: 7, username: 'john' ,weight:80,date:'2019-05-25'},
 { 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'}


]
我想要每个唯一用户的最后一条记录datewise for ex:

 [ 
 { 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'},
]

在javascript中。

检查当前对象<代码>用户名和上一个对象<代码>用户名的数组从头到尾。如果它们相同,则断开循环,否则推入数组

const输入=[
{id:1,用户名:'harry',体重:80,日期:'2019-01-01'},
{id:2,用户名:'harry',体重:84,日期:'2019-02-21'},
{id:3,用户名:'john',体重:80,日期:'2019-03-11'},
{id:4,用户名:'peter',体重:80,日期:'2019-08-06'},
{id:5,用户名:'peter',体重:80,日期:'2019-06-11'},
{id:6,用户名:'harry',体重:90,日期:'2019-04-03'},
{id:7,用户名:'john',体重:80,日期:'2019-05-25'},
{id:8,用户名:'peter',体重:80,日期:'2019-10-14'},
];
常量输出=[];
for(设i=input.length-1;i>0;i--){
如果(输入[i]。用户名===输入[i-1]。用户名){
打破
}
输出推送(输入[i]);
}

log(output.sort((a,b)=>a.date.localeCompare(b.date.localeCompare))映射和设置本身只包含唯一的值。您可以按以下方式使用此选项:

var myMap=[
{id:1,用户名:'harry',体重:80,日期:'2019-01-01'},
{id:2,用户名:'harry',体重:84,日期:'2019-02-21'},
{id:3,用户名:'john',体重:80,日期:'2019-03-11'},
{id:4,用户名:'peter',体重:80,日期:'2019-08-06'},
{id:5,用户名:'peter',体重:80,日期:'2019-06-11'},
{id:6,用户名:'harry',体重:90,日期:'2019-04-03'},
{id:7,用户名:'john',体重:80,日期:'2019-05-25'},
{id:8,用户名:'peter',体重:80,日期:'2019-10-14'},
]
var result={};
对于(i=0;i您可以获取一个值并获取值

var数组=[{id:1,用户名:'harry',体重:80,日期:'2019-01-01'},{id:2,用户名:'harry',体重:84,日期:'2019-02-21'},{id:3,用户名:'john',体重:80,日期:'2019-03-11'},{id:4,用户名:'peter',体重:80,日期:'2019-08-06'},{id:5,用户名:'peter',体重:80,日期:'2019 06-06-11'},{id:6,用户名:'harry',体重:90,日期:'2019-04-03'},{id:7,用户名:'john',体重:80,日期:'2019-05-25'},{id:8,用户名:'peter',体重:80,日期:'2019-10-14'},
结果=Array.from(新映射(Array.Map(o=>[o.username,o])).values());
console.log(结果);

作为控制台包装{max height:100%!important;top:0;}
您自己是如何尝试解决此问题的,出现了什么问题?请发布您的“”代码。我想要按日期排序的结果,数组未排序。请检查问题,我已更新未得到预期结果,您在循环中按日期排序的结果在哪里。您没有得到我的问题。我不仅想要唯一的用户记录,而且还想要按asc顺序排序的唯一用户日期的最后一条记录。@M.K-我猜我错了R回答了你的问题。所以,基本上你想要所有唯一的对象,如果用户名重复,最后一个对象就是你想要的。提供的大多数解决方案都会给出你想要的输出。