Javascript 根据阵列中的Id和日期获取最新版本

Javascript 根据阵列中的Id和日期获取最新版本,javascript,arrays,mongodb,meteor,Javascript,Arrays,Mongodb,Meteor,我有一个包含以下属性的javascript对象数组:\u id、isVersionFrom、createdAt \u id,isVersionFrom存储了一个mongoDb\u id(当isVersionFrom是原始对象时为false)createdAt有一个来自历元的时间戳。 现在我想为每个\u id获取一个最新版本的数组 例如,如果我有这个数组: [ { _id:'CXsqvJ3ArwpM7aQwg', 创建日期:1493630867411, isVersionFrom:false }

我有一个包含以下属性的javascript对象数组:
\u id、isVersionFrom、createdAt
\u id,isVersionFrom
存储了一个mongoDb\u id(当isVersionFrom是原始对象时为false)
createdAt
有一个来自历元的时间戳。 现在我想为每个
\u id
获取一个最新版本的数组

例如,如果我有这个数组:


[
{
_id:'CXsqvJ3ArwpM7aQwg',
创建日期:1493630867411,
isVersionFrom:false
},
{
_id:'nnFthaqJ254BQozSp',
创建日期:1493630967411,
iVersionFrom:'CXsqvJ3ArwpM7aQwg'
},
{
_id:'JKSFE6AOF9HT8CW9',
创建日期:149361067411,
iVersionFrom:'CXsqvJ3ArwpM7aQwg'
},
{
_id:'HSitgQdFwYHqCjRax',
创建日期:149361067411,
isVersionFrom:false
},
{
_id:‘vhZZCKhyQgkNSGjqK’,
创建日期:1493631077411,
isVersionFrom:'HSitgQdFwYHqCjRax'
},
]

我想要这个结果:


[
{
_id:'JKSFE6AOF9HT8CW9',
创建日期:149361067411,
iVersionFrom:'CXsqvJ3ArwpM7aQwg'
},
{
_id:‘vhZZCKhyQgkNSGjqK’,
创建日期:1493631077411,
isVersionFrom:'HSitgQdFwYHqCjRax'
},
]


因此,它基本上必须过滤掉id的所有旧版本。

使用下划线更新了可能的解决方案:

const myArray=[
{
_id:“CXsqvJ3ArwpM7aQwg”,
创建日期:1493630867411,
isVersionFrom:false
},
{
_id:“nnFthaqJ254BQozSp”,
创建日期:1493630967411,
iVersionFrom:“CXsqvJ3ArwpM7aQwg”
},
{
_id:“Jksfe6Aaof9hT8CW9”,
创建日期:149361067411,
iVersionFrom:“CXsqvJ3ArwpM7aQwg”
},
{
_id:“HSitgQdFwYHqCjRax”,
创建日期:149361067411,
isVersionFrom:false
},
{
_id:“vhZZCKhyQgkNSGjqK”,
创建日期:1493631077411,
iVersionFrom:“HSitgQdFwYHqCjRax”
}
];
//链接要无缝使用的下划线方法。
常量结果=u389;.chain(myArray)
//按isVersionFrom或原始id对项目进行分组。
.groupBy(item=>(!item.isVersionFrom?item.\u id:item.isVersionFrom))
//对于每组,取最新日期(最晚)的项目。
.map(val=>ux.max(val,item=>item.createdAt))
//获取链的价值。
.value();

嘿,拉米尔,好建议。唯一的问题是,当isVersionFrom为false且数组中没有其他版本时,我仍然需要isVersionFrom false对象,因为该对象是原始对象。@JoeriSmits这是否意味着,如果在
isVersionFrom
中有某个元素具有字符串值,则还有一个元素具有相同的
\u id
isVersionFrom:false
?也就是说,对象是文件,第一个上载的文件具有
isVersionFrom:false
在此文件之上上载的所有下一个文件都具有原始文件的
isVersionFrom:id
谢谢。我已经基于您的第一个版本编写了一个解决方案,但是您更新的解决方案更干净。我真的应该学习下划线:)。