js数组的多条件排序

js数组的多条件排序

  • 先按照city排好序,再按照home进行排序,最后按照size排序

  • var data = [
    {“city”: “四川”, “home”:“成都”, “size”: “1”},
    {“city”: “广东”, “home”:“深圳”, “size”: “3”},
    {“city”: “广东”, “home”:“广州”, “size”: “5”},
    {“city”: “四川”, “home”:“自贡”, “size”: “2”},
    {“city”: “广东”, “home”:“广州”, “size”: “2”}
    ];

  • 直接撸代码

  • const moreConditionScort = function (tableData = [], fields = []) {
    var arrScort = [], result = []
    function getSort(fn) {
    return function (a, b) {
    var ret = 0
    if (fn.call(this, a, b)) {
    ret = -1
    } else if (fn.call(this, b, a)) {
    ret = 1
    }
    return ret
    }
    }
    function getMutipSort(arr) {
    return function (a, b) {
    var tmp,
    i = 0
    do {
    tmp = arr[i++](a, b)
    } while (tmp == 0 && i < arr.length)
    return tmp
    }
    }
    for (let i = 0; i < fields.length; i++) {
    arrScort.push(
    getSort(function (a, b) {
    return a[fields[i]] < b[fields[i]]
    })
    )
    }
    result = tableData.sort(getMutipSort(arrScort))
    return result
    }

let tableData = moreConditionScort(data,[‘city’,‘home’,‘size’])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值