Javascript 如何根据最新日期筛选/减少数据

Javascript 如何根据最新日期筛选/减少数据,javascript,arrays,typescript,object,Javascript,Arrays,Typescript,Object,我要做的是将数据过滤到最新日期,即2020-04-01 我尝试的是这样的: data = { start: 1, data: [ { name: 'Juan', date: '2020-01-19 }, { name: 'Carlo', date: '2020-03-01 }, { name: 'Dela', date: '2020-03-01 }, { name: 'Cruz', date: '2021-04-01

我要做的是将数据过滤到最新日期,即
2020-04-01

我尝试的是这样的:

data = {
 start: 1,
 data: [
  {
   name: 'Juan',
   date: '2020-01-19
  },
  {
   name: 'Carlo',
   date: '2020-03-01
  },
  {
   name: 'Dela',
   date: '2020-03-01
  },
  {
   name: 'Cruz',
   date: '2021-04-01
  }
 ],
 totalRecords: 19
}
但它不起作用

预期产出应该是这样的

response['data']['data'] = response['data']['data'].filter(item => {
           return item['date'] > '2020-04-01';
         });

您可以使用
排序
,然后获取数组中的第一个条目以获取具有最新日期的项

data = {
 start: 1,
 data: [
  {
   name: 'Cruz',
   date: '2021-04-01
  }
 ],
 totalRecords: 19
}

您需要将日期字符串转换为
date
对象

const checkDate=新日期('2020-04-01')
常数响应={
起点:1,
数据:[
{
名字:“胡安”,
日期:2020-01-19
},
{
姓名:'卡洛',
日期:2020-03-01
},
{
姓名:'Dela',
日期:2020-03-01
},
{
姓名:“克鲁兹”,
日期:2021-04-01
}
],
总数记录:19
}
response.data=响应
.数据
.filter(({date})=>新日期(日期)>检查日期)

console.log(response)
其他答案存在一些问题(在性能、预期输出方面)

  • 您不应该使用
    排序
    ,因为
    时间复杂性
    至少需要
    O(nlogn)
  • 使用
    filter
    将返回多个
    lastItem
  • ==>所以你可以像这样使用
    Array#reduce
    (时间复杂度就是
    O(n)

    const comparedDate=新日期('2020-04-01')
    常数响应={
    起点:1,
    数据:[{姓名:'Juan',日期:'2020-01-19'},{姓名:'Carlo',日期:'2020-03-01'},{姓名:'Dela',日期:'2020-03-01'},{姓名:'Cruz',日期:'2021-04-01'},
    总数记录:19};
    const lastData=response.data.reduce((acc,curr)=>{
    if(新日期(当前日期)>比较日期)
    acc=电流;
    返回acc;
    },response.data[0]);
    
    console.log(lastData)你想改为做大于或等于<代码>退货项目['date']>=“2020-04-01”
    项目['date']>'2020-04-01'==>
    项目['date']>='2020-04-01'
    您不应该对
    进行排序
    ,因为
    时间复杂度
    至少需要
    O(nlogn)
    。更新后的帖子澄清了输出应该如何进行,请忽略此答案。另外两个答案满足了您的要求。我更新了帖子。在这种情况下,您可以选择第二个解决方案,其中的初始化数据是数组“[]);”@初学者。看看我最新的答案
    data.data.sort((a, b) => new Date(b.date) - new Date(a.date))[0];