cqwcns 发表于 2021-10-21 21:54

JS 根据传参进行灵活排序(sotr)的问题。

如下代码,我们可以通过field的值,来决定排序字段,但我不知道如果通过by值来影响a,b的顺序,进行决定是升序还是降序。

求指教。

// 排序结果
bySort: function (by = 'asc', field = 'sum') {

    // 获得数据
    let { result } = that.data;
    // 排序操作
    result = result.sort((a, b) => a - b);
    // 重新渲染数据
    that.setData({ result });
},

涛之雨 发表于 2021-10-21 22:05

本帖最后由 涛之雨 于 2021-10-21 22:06 编辑

// 排序结果
bySort: function (by = "asc", field = 'sum') {
// 获得数据
let { result } = that.data;
// 排序操作
result = result.sort((a, b) => by === "asc"?(a - b):(b - a));
// 重新渲染数据
that.setData({ result });
},

打工仔-知恩 发表于 2021-10-22 08:26

自己封装的方法适配可扩展 国际化也适配你可直接拿去用

打工仔-知恩 发表于 2021-10-22 08:29

使用示例:Sort(result,by === 'asc',)

林夕★ 发表于 2021-10-22 10:33

用三元表达式,试一下,应该是可以的。例(by==sas)? /返回结果为true时/a-b : /返回结果为false时/b-a       理论应该没问题你自己试一下

涛之雨 发表于 2021-10-22 11:10

打工仔-知恩 发表于 2021-10-22 08:26
自己封装的方法适配可扩展 国际化也适配你可直接拿去用

方便的话可以把相关的代码复制粘贴出来,方便交流,(而且图上显示的部分不全localCompare函数没有)
页: [1]
查看完整版本: JS 根据传参进行灵活排序(sotr)的问题。