Javascript 为什么我的筛选和排序不起作用?
我有一个objectJavascript 为什么我的筛选和排序不起作用?,javascript,sorting,reactjs,filter,react-native,Javascript,Sorting,Reactjs,Filter,React Native,我有一个objectevent数组,其中每个事件都有一个开始日期和一个结束日期 我正试图通过删除任何早于now的事件来过滤事件。然后,我尝试将我的事件排序为最新事件,然后在屏幕上显示它们 我正在使用以下例程: constructor(props) { // .. this.props.events = this.filterAndSortEvents(props.events); } filterAndSortEvents(events: Object) { let
event
数组,其中每个事件都有一个开始日期和一个结束日期
我正试图通过删除任何早于now
的事件来过滤事件。然后,我尝试将我的事件排序为最新事件,然后在屏幕上显示它们
我正在使用以下例程:
constructor(props) {
// ..
this.props.events = this.filterAndSortEvents(props.events);
}
filterAndSortEvents(events: Object)
{
let Original = events;
const now = new Date();
// filter
let Filtered = events.map(function(e) {
if(e.endDate > Date.now())
{ return e }
});
// sort
let Sorted = Filtered.sort(function(a,b) {
return a.startDate > b.startDate ? -1 : a.startDate < b.startDate ? 1 : 0;
});
return Sorted;
}
构造函数(道具){
// ..
this.props.events=this.filterAndSortEvents(props.events);
}
filterAndSortEvents(事件:对象)
{
让原始=事件;
const now=新日期();
//滤器
let Filtered=events.map(函数(e){
如果(e.endDate>Date.now())
{返回e}
});
//分类
let Sorted=Filtered.sort(函数(a,b){
返回a.startDate>b.startDate?-1:a.startDate
但不起作用:
也许你考虑使用过滤。
let filtered = events.filter(e => e.endDate > Date.now());
您可以使用时间的增量作为排序返回值(在原地工作)
并返回过滤后的
return filtered;
只是一个小提示,通常instancable函数通常是用大写字母写的。不是,您需要:
// filter
let Filtered = events.filter(x=> e.endDate > Date.now());
关于排序,首先,在您的情况下,条件运算符可能无法正常工作:
// sort
let Sorted = Filtered.sort(function(a,b) {
return a.startDate > b.startDate
? -1
: (a.startDate < b.startDate ? 1 : 0);
});
//排序
let Sorted=Filtered.sort(函数(a,b){
返回a.startDate>b.startDate
? -1
:(a.起始日期
其次,您可以尝试使用或进行排序尝试将events属性设置为类,使用this.events
vsthis.props.events
抱歉,我仍然看不到任何更改。。有什么建议吗?请提供少量数据进行筛选。结果表明,this.props.events
是静态的,其值无法更改。因此,我无法看到新的变化。
// sort
let Sorted = Filtered.sort(function(a,b) {
return a.startDate > b.startDate
? -1
: (a.startDate < b.startDate ? 1 : 0);
});