Javascript 按最新日期按对象数组排序不起作用
我需要按最新日期排序 这是Javascript 按最新日期按对象数组排序不起作用,javascript,reactjs,algorithm,Javascript,Reactjs,Algorithm,我需要按最新日期排序 这是sortByDate()函数-此排序列表当前将按最旧日期而不是最新日期对日期进行排序 sortByDate = () => { const { newsList } = this.state; newsList.sort((a, b) => { const c = new Date(a.date); const d = new Date(b.date); return c - d; });
sortByDate()
函数-此排序列表当前将按最旧日期而不是最新日期对日期进行排序
sortByDate = () => {
const { newsList } = this.state;
newsList.sort((a, b) => {
const c = new Date(a.date);
const d = new Date(b.date);
return c - d;
});
this.setState({ newsList });
};
这是需要排序的新闻列表:
hits: [
{
id: '14253463',
doc_type: 'doc-test-type',
lang: 'eng',
author_name: 'Matt Davis',
author_id: 'BBC Sport',
date: '11 June 2019'
},
{
id: '14253463',
doc_type: 'doc-test-type',
lang: 'eng',
author_name: 'Matt Davis',
author_id: 'BBC Sport',
date: '10 June 2019'
},
{
id: '14253463',
doc_type: 'doc-test-type',
lang: 'eng',
author_name: 'Matt Davis',
author_id: 'BBC Sport',
date: '29 June 2019'
}
]
当前
sortByDate
按最早的日期对我的数据进行排序,为什么他不能按预期工作?这应该可以满足您的需要,首先使用最新的日期进行排序。还可以向排序函数传递sortorder参数,以指示所需的排序顺序
newsList=[{id:'14253463',doc类型:'doc test type',lang:'eng',作者姓名:'Matt Davis',作者id:'BBC Sport',日期:'2019年6月11日'},{id:'14253463',doc类型:'doc test type',lang eng作者姓名:'Matt Davis作者id:'BBC Sport',日期:'2019 6月10日'},{id:'14253463',doc_type:'doc test type',lang:'eng',作者姓名:'Matt Davis',作者id:'BBC Sport',日期:'2019年6月29日'}];
日志(“原始列表:”);
newsList.forEach(h=>console.log(新日期(h.Date.toLocaleDateString());
新闻列表.排序((a,b)=>{
常数c=新日期(a.日期);
const d=新日期(b.日期);
返回d-c;
});
log(“排序列表:”);
newsList.forEach(h=>console.log(new Date(h.Date).toLocaleDateString());
这应该满足您的需要,首先使用最新的进行排序。您还可以将sortorder参数传递给排序函数,以指示所需的排序顺序
newsList=[{id:'14253463',doc类型:'doc test type',lang:'eng',作者姓名:'Matt Davis',作者id:'BBC Sport',日期:'2019年6月11日'},{id:'14253463',doc类型:'doc test type',lang eng作者姓名:'Matt Davis作者id:'BBC Sport',日期:'2019 6月10日'},{id:'14253463',doc_type:'doc test type',lang:'eng',作者姓名:'Matt Davis',作者id:'BBC Sport',日期:'2019年6月29日'}];
日志(“原始列表:”);
newsList.forEach(h=>console.log(新日期(h.Date.toLocaleDateString());
新闻列表.排序((a,b)=>{
常数c=新日期(a.日期);
const d=新日期(b.日期);
返回d-c;
});
log(“排序列表:”);
newsList.forEach(h=>console.log(新日期(h.Date.toLocaleDateString()))
到目前为止你试过调试吗?嗯,交换比较器?d-c
@VLAZ解决了这个问题,tnx。@VLAZ糟糕透了。谢谢你帮我解决这个问题:P@NickParsons不过,我真希望它没有进行适当的排序。在执行类似于arr.sort().map()的操作时,对一个您不打算变异的数组进行变异,这是非常烦人的
到目前为止你试过调试吗?嗯,交换比较器?d-c
@VLAZ解决了这个问题,tnx。@VLAZ糟糕透了。谢谢你帮我解决这个问题:P@NickParsons不过,我真希望它没有进行适当的排序。当您执行类似于arr.sort().map()的操作时,对一个您不打算变异的数组进行变异,这是非常烦人的