快速排序,按某个属性,或按“获取排序依据的函数”,来排序

        /*
        * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序.
        * @method soryBy
        * @static
        * @param {array} arr 待处理数组
        * @param {string|function} prop 排序依据属性,获取
        * @param {boolean} desc 降序
        * @return {array} 返回排序后的新数组
        */
        sortBy : function (arr, prop, desc){
            var props=[],
            ret=[],
            i=0,
            len=arr.length;
            if(typeof prop=='string') {
                for(; i<len; i++){
                    var oI = arr[i];
                    (props[i] = new String(oI && oI[prop] || ''))._obj = oI;
                }
            }
            else if(typeof prop=='function') {
                for(; i<len; i++){
                    var oI = arr[i];
                    (props[i] = new String(oI && prop(oI) || ''))._obj = oI;
                }
            }
            else {
                throw '参数类型错误';
            }
            props.sort();
            for(i=0; i<len; i++) {
                ret[i] = props[i]._obj;
            }
            if(desc) ret.reverse();
            return ret;
        }

 

调用: _data = _self.sortBy(_data,function(el){return el.addTime;},1);

 

转载于:https://www.cnblogs.com/ningyanbo/p/5260663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值