js自定义排序(table字段)

调用SortByProps方法对原数据进行自定义的排序。

           var filesInfo =[{id:1,fileNum:'123555'},
                {id:2,fileNum:'3222'},
                {id:3,fileNum:'AAs'},
                {id:4,fileNum:'145423'},
                {id:5,fileNum:'QSW'},
                {id:6,fileNum:'2'}]; //原数据
            filesInfo.sort(function (a, b) {
                return SortByProps(a, b, { "fileNum": "ascending" });  //ascending:升序;descending:降序。
            });
            console.log(filesInfo) 

上面代码根据fileNum升序,结果如下图:
在这里插入图片描述
公用的SortByProps方法(这个方法是引用的js自定义多字段排序):

//table排序
//以下函数排序属性可自定义
function SortByProps(item1, item2, obj) {
    var props = [];
    if(obj){
        props.push(obj)
    }
    var cps = []; // 存储排序属性比较结果
    // 如果未指定排序属性(即obj不存在),则按照全属性升序排序
    // 记录下两个排序项按照各个排序属性进行比较得到的结果
    var asc = true;
    if (props.length < 1) {
        for (var p in item1) {
            if (item1[p] > item2[p]) {
                cps.push(1);
                break; // 大于时跳出循环。
            } else if (item1[p] === item2[p]) {
                cps.push(0);
            } else {
                cps.push(-1);
                break; // 小于时跳出循环。
            }
        }
    } else {
        for (var i = 0; i < props.length; i++) {
            var prop = props[i];
            for (var o in prop) {
                asc = prop[o] === "ascending";
                if (item1[o] > item2[o]) {
                    cps.push(asc ? 1 : -1);
                    break; // 大于时跳出循环。
                } else if (item1[o] === item2[o]) {
                    cps.push(0);
                } else {
                    cps.push(asc ? -1 : 1);
                    break; // 小于时跳出循环。
                }
            }
        }
    }
    // 根据各排序属性比较结果综合判断得出两个比较项的最终大小关系
    for (var j = 0; j < cps.length; j++) {
        if (cps[j] === 1 || cps[j] === -1) {
            return cps[j];
        }
    }
    return false;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值