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];