【发布时间】:2018-05-01 22:26:08
【问题描述】:
我有一个这样组织的数组。
const array = [
{
Year: 2018,
Month: 'Dec'
},
{
Year: 2017,
Month: 'Apr'
},
{
Year: 2018,
Month: 'Mar'
},
{
Year: 2018,
Month: 'Oct'
},
{
Year: 2017,
Month: 'Jan'
},
{
Year: 2018,
Month: 'Apr'
}
]
我已经成功地按年或按月组织了数据,但是每次我尝试同时按两者组织数据时,最后组织数据的人都会取代之前的所有数据。我理解它为什么这样做,但似乎找不到解决方法。
const sortedByYear = array.sort((a, b) => a.Year - b.Year);
按年份排序很简单。
const sorted = sortedByYear.sort((a, b) => Months.indexOf(a.Month) - Months.indexOf(b.Month));
按月份排序。
我尝试在月份检查器中添加某种检查器,如果年份匹配则使用,但这并不能解决它如何排序的问题。
【问题讨论】:
-
按年份排序,如果它们相同 - 按月份排序。
-
这是contravariant functors 的一个有趣用例——我分享了一个答案,展示了一种类似于您在此处尝试实现的多重排序:stackoverflow.com/a/47640811/633183
标签: javascript arrays sorting ecmascript-6 indexof