Javascript 如何在lodash中实现这一点

Javascript 如何在lodash中实现这一点,javascript,lodash,Javascript,Lodash,我有一个如下所示的数组: var arr = [ {user: 50, id: 70, time: '14:30'}, // ignore this user 50 {user: 70 id: 50, time: '14:50'}, // output this time is higher id 50 {user: 83, id: 50, time: '18:30'} ]; 我想要的结果是按时间从数组中获取唯一的用户或id对象: var result = [ {user: 83, id: 5

我有一个如下所示的数组:

var arr = [
{user: 50, id: 70, time: '14:30'}, // ignore this user 50
{user: 70 id: 50, time: '14:50'}, // output this time is higher id 50
{user: 83, id: 50, time: '18:30'}
];
我想要的结果是按时间从数组中获取唯一的用户或id对象:

var result = [
{user: 83, id: 50, time: 18:30},
{user: 70, id: 50, time: 14:50}
];

那么结果应该会下降

var result = [
    {user: 83, id: 50, time: 18:30},
    {user: 50, id: 70, time: 14:50}
    ];

进一步解释我想要什么。考虑Obj1用户是50,ID是70,并且我们还有Obj2用户70和ID 50,只要数组中有另一个对象共享用户ID-ID用户从它们中降低最近的时间值。

< p>需要通过<代码> ID

进行过滤。
_.filter(arr, obj => obj.id === 50);
您可以使用CoreJS

arr.filter(item => item.id === 50)
您可以使用以降序排列时间,以确保我们以最高的时间顺序唯一地删除每个项目的相同
用户
id
。最后,我们使用进行比较

var result = _(arr)
  .orderBy('time', 'desc')
  .uniqWith((v1, v2) => v1.id === v2.user && v1.user === v2.id)
  .value();
//第一个数据集
var arr=[
{user:50,id:70,time:'14:30'},//忽略此用户50
{user:70,id:50,time:'14:50'},//这次的输出高于id 50
{用户:83,id:50,时间:'18:30'}
];
var结果=U8;(arr)
.orderBy('time','desc')
.uniqWith((v1,v2)=>v1.id==v2.user&&v1.user==v2.id)
.value();
console.log(“第一个数据集”);
控制台日志(结果);
//第二数据集
arr=[
{user:70,id:50,time:'14:30'},//忽略此//id 50
{user:50,id:70,time:'14:50'},//输出此//user 50
{用户:83,id:50,时间:'18:30'}
];
结果=(arr)
.orderBy('time','desc')
.uniqWith((v1,v2)=>v1.id==v2.user&&v1.user==v2.id)
.value();
log(“第二个数据集”);
控制台日志(结果)
.as控制台包装{最小高度:100%;顶部:0;}

我有一个数组,看起来像这样
请重试,这是无效的-我确定现在是
时间:“14:30”
等CDO您必须使用lodash吗?为什么不是普通的JS?您需要
array#filter
array#sort
方法,如文档所示-或lodash等价物…\。过滤和排序我猜(sortBy?)可能是纯js,但我更喜欢lodash,它可爱又短,我太懒了,我对你想要的东西很困惑。
[{u:60,i:50,t:'16:30'},{u:83,i:70,t:'14:30'},{u:83,i:50,t:'15:30'}]的结果是什么?两个在
user
上匹配,两个在
id
上匹配,但不是相同的两个…注意OP上写的是“按时间”。。。似乎OP希望排序为well@mohamedtebry如何利用时间,有疑问地提到,所以基本上我想过滤对象属性“user”和“id”之间的唯一交叉值,以便输出将两个在user或id中共享相同编号的对象中的最高排序时间带到数组中相应的现有对象
var result = _(arr)
  .orderBy('time', 'desc')
  .uniqWith((v1, v2) => v1.id === v2.user && v1.user === v2.id)
  .value();