【对象数组根据属性排序】

// sort使用的排序方法
// 传入对象数组用于排序的对象的属性,升序/降序
function compare(property, sortType = "asc") {
    debugger

    // 如果不是 asc,desc,不做下一步比较
    if (!(sortType === "desc" || sortType === "asc")) {
        return;
    }

    return function (object1, object2) {
        // 取得对象属性值
        let value1 = object1[property];
        let value2 = object2[property];

        // 如果该对象不存在这个属性,也不做后续比较
        if (!value1 || !value2) {
            return;
        }

        // 如果两个属性取得的值不是一个类型的就不用比较了
        if (typeof (value1) == typeof (value2)) {

            // 判断 传入的属性值 是number还是 string
            if (typeof (value1) === 'number') {
                // 如果是升序
                if (sortType === "asc") {
                    return value1 - value2;
                } else {
                    // 如果是降序
                    return value2 - value1;
                }
            } else if (typeof (value1) === 'string') {
                // 如果是升序
                if (sortType === "asc") {
                    return value1.toString().localeCompare(value2);
                } else {
                    // 如果是降序
                    return value2.toString().localeCompare(value1);
                }
            } else {
                // 其它类型就不排序了
                return;
            }
        } else {
            return;
        }
    }
}

// 通用方法,需要传入 需要排序的对象数组、对象属性、排序方式
export function objectArraySort(array, property, sortType) {
    debugger

    // 如果不是对象数组用这个方法,返回的是undefined
    if (!(array instanceof Array)) {
        return;
    }

    return array.sort(compare(property, sortType));
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值