【发布时间】:2019-10-05 10:50:36
【问题描述】:
我正在尝试返回已排序产品的列表:
return products.sort(getSortFunc(activeSortId))
每个activeSortId 对应一个排序回调函数,通过调用getSortFunc 检索该函数。我有三个排序函数:sortByPriceAsc、sortByPriceDesc、sortByDate。
问题:当用户 sortByPriceDesc 后跟 sortByDate 时,结果(逻辑上)仍然按降序排列。但是,我希望它按升价排序。我可以通过链接排序函数(return products.sort(a).sort(b).sort(c))来解决这个问题,但是如果我不知道顺序怎么办?:
我想知道是否可以通过调用例如解决它sortByPriceAsc 在函数 sortByDate 中,还是类似的东西?下面是一个简化的尝试,但显然它不起作用,因为调用 sortByPriceAsc 不会修改任何内容:
sortByPriceAsc: (a, b) => a.price - b.price,
sortByDate: (a, b) => {
this.sortByPriceAsc()
return b.date - a.date
}
很高兴获得任何帮助或一般批评。
【问题讨论】:
-
I could solve this by chaining the sorting function- 通常不会,因为不能保证sort是稳定的。
标签: javascript sorting callback