Javascript 在对象数组中搜索最新的匹配记录
我有api中的对象列表,我想显示最新的值 这是我的目标。 这是我如何得到位置3的Javascript 在对象数组中搜索最新的匹配记录,javascript,node.js,api,Javascript,Node.js,Api,我有api中的对象列表,我想显示最新的值 这是我的目标。 这是我如何得到位置3的 records.forEach((record) => { if (record.location == locationId) { result.push(record); }}); 但现在我想从中得到最新的唱片 任何帮助都将非常感谢 过滤然后排序,然后获取第一个元素: var记录=[ {值:'1',位置:'3',时间戳:'2020-04-28 10:12'}, {值:
records.forEach((record) => {
if (record.location == locationId) {
result.push(record);
}});
但现在我想从中得到最新的唱片
任何帮助都将非常感谢 过滤然后排序,然后获取第一个元素: var记录=[ {值:'1',位置:'3',时间戳:'2020-04-28 10:12'}, {值:'2',位置:'2',时间戳:'2020-04-28 00:24'}, {值:'3',位置:'3',时间戳:'2020-04-28 07:37'}, {值:'4',位置:'3',时间戳:'2020-04-28 14:27'}, {值:'5',位置:'3',时间戳:'2020-04-28 23:28'}, {值:'6',位置:'1',时间戳:'2020-04-28 10:13'} ]
console.logrecords.filterx=>x.location==3.sorta,b=>a.timestamp
现在记录[0]是最新的记录。您的例程将创建一个结果数组,如下所示:
const result = [
{ value: '15', location: '3', timestamp: '2020-06-11 19:48:28' },
{ value: '16', location: '3', timestamp: '2020-06-10 19:48:28' },
{ value: '14', location: '3', timestamp: '2020-06-19 19:48:28' }
];
然后你可以简单地做:
const latest = result.sort((a,b) => a.timestamp < b.timestamp)[0];
您的例程将创建一个如下所示的结果数组:
const result = [
{ value: '15', location: '3', timestamp: '2020-06-11 19:48:28' },
{ value: '16', location: '3', timestamp: '2020-06-10 19:48:28' },
{ value: '14', location: '3', timestamp: '2020-06-19 19:48:28' }
];
然后你可以简单地做:
const latest = result.sort((a,b) => a.timestamp < b.timestamp)[0];
排序是一项相对昂贵的操作,时间复杂度为logn
相反,您可以使用array.prototype.reduce只需按时间遍历一次的算法来遍历源阵列,以找到与所需位置相对应的最新记录:
const src=Array.from
{长度:15},
_,i=>{location:0 | i/3,时间戳:new Date2020,5,i+1.toLocaleString'uk-UA'}
,
getLatestForLocation=log,locationId=>
log.reducer,项=>{
iLocationID!=项目位置返回r
if!r.timestamp | | r.timestamp