Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象数组中搜索最新的匹配记录_Javascript_Node.js_Api - Fatal编程技术网

Javascript 在对象数组中搜索最新的匹配记录

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'}, {值:

我有api中的对象列表,我想显示最新的值

这是我的目标。

这是我如何得到位置3的

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 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 排序{timestamp:a},{timestamp:b}=>a>b-1 : 1; 现在记录[0]是最新的记录。

对记录进行排序:

排序{timestamp:a},{timestamp:b}=>a>b-1 : 1;
现在记录[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 相反,您可以使用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.as控制台包装器{min height:100%;}按时间戳排序数组,然后选择第一个元素?我无法排序,不知道为什么@ChrisGSee会重复问题,特别是看一看。按时间戳排序数组,然后选择第一个元素?我无法排序,不知道为什么@ChrisGSee会有重复的问题,尤其是看一看。没有考虑位置过滤器,而且由于日期的原因,效率会降低。看到格式,你可以按字母顺序排序;从技术上讲,我认为您不需要转换为日期对象,因为ISO格式的日期按字母顺序是可比较的。没有考虑位置过滤器,并且您会因为日期而失去效率。看到格式,你可以按字母顺序排序;从技术上讲,我认为您不需要转换为日期对象,因为ISO格式的日期在字母顺序上是可比较的。