Arrays 使用两个字段对映射函数进行反应排序
我是React的初学者,我想通过两个过滤器对数组进行排序:Arrays 使用两个字段对映射函数进行反应排序,arrays,reactjs,sorting,map-function,Arrays,Reactjs,Sorting,Map Function,我是React的初学者,我想通过两个过滤器对数组进行排序: {folder.actions .sort((a,b) => { return a.date_actual - b.date_actual || a.date_sched - b.date_sched }) .map(action => { ... 这段代码不起作用,我想用map函数按降序和混合两种日期类型“date\u actual”和“date\u sched”进行排序,而不是: ...
{folder.actions
.sort((a,b) => {
return a.date_actual - b.date_actual || a.date_sched - b.date_sched
})
.map(action => {
...
这段代码不起作用,我想用map函数按降序和混合两种日期类型“date\u actual”和“date\u sched”进行排序,而不是:
...
<Col xs={4}>
{action.date_actual ?
new Date(action.date_actual).toLocaleDateString() :
new Date(action.date_sched).toLocaleDateString()
}
</Col>
...
18/04/2021 (date_sched)
03/11/2020 (date_actual)
18/04/2021 (date_sched)
03/11/2020 (date_actual)
03/11/2020 (date_actual)
03/11/2020 (date_actual)
12/04/2021 (date_sched)
03/11/2020 (date_actual)
03/11/2020 (date_actual)
。。。
{action.date_实际值?
新日期(action.Date_actual)。toLocaleDateString():
新日期(action.Date\u sched).toLocaleDateString()
}
...
2021年4月18日(日期附表)
2020年11月3日(实际日期)
2021年4月18日(日期附表)
2020年11月3日(实际日期)
2020年11月3日(实际日期)
2020年11月3日(实际日期)
2021年4月12日(日期附表)
2020年11月3日(实际日期)
2020年11月3日(实际日期)
谢谢你的时间和帮助 如果希望同时基于两种日期类型进行排序,可以在排序逻辑中使用
|
运算符。例如,假设有这样一个数组:(为了简单起见,我使用了一个数字)
const yourray=[
{第一天:0},
{第二天:1},
{第一天:3},
{第二天:2}
];
我们想要实现的是:
const yourray=[
{第一天:0},
{第二天:1},
{第二天:2}
{第一天:3},
];
您可以告诉javascript使用第一个日期,如果第一个日期不存在,则使用第二个日期
yourArray
.sort((a,b)=>(a.第一个日期| a.第二个日期)-(b.第一个日期| b.第二个日期));
//常量数组=[
//{第一天:0},
//{第二天:1},
//{第二天:2}
//{第一天:3},
// ];
感谢您的快速回复
为此:
{folder.actions
.sort((a,b) => {
return (a.date_actual || a.date_sched) - (b.date_actual || b.date_sched)
})
.map(action => {
...
return (
...
<Col xs={4}>
{action.date_actual ?
new Date(action.date_actual).toLocaleDateString() :
new Date(action.date_sched).toLocaleDateString()}
</Col>
在数组的输入中,我有:
date_actual: "2020-11-03 17:30:30"
date_sched: null
有些条目是反向的,date_actual为空,date_sched为Full您的排序函数将始终按照第一个条件进行排序,因为它将始终计算为true。 如果要按这两个字段进行排序,则必须明确定义这些条件: e、 g。 如果(a.date1>b.date2)和(a.date2>b.date2)返回1
依此类推……如果您可以选择添加其他库,Lodash是一个很棒的库,它提供了许多有用的实用程序来处理阵列。
sortBy()。你的问题不清楚。您的输入数据是什么样子的?那么,输出会是什么样子?@AjeetShah,在输入中我有一个数组,一些条目看起来像date\u-actual:(一个日期),date\u-sched:null,其他的date\u-actual:null,date\u-sched:(另一个日期)。在输出中,我希望所有日期都按反向排序。不要在注释中添加这些详细信息,请更新您的问题以包含这些详细信息(例如,date\u actual
有一个值或date\u sched
有一个值)。如果创建临时日期字段,排序逻辑可能会更简单,但不是必需的(例如,没有“have to”这里)@crashmstr事实上,我是从这里看过去的。谢谢你澄清这一点。谢谢你!我已经更新了我的答案
date_actual: "2020-11-03 17:30:30"
date_sched: null