zoukankan      html  css  js  c++  java
  • 快速排序,按某个属性,或按“获取排序依据的函数”,来排序

            /*
            * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序.
            * @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);
  • 相关阅读:
    ADO.NET的记忆碎片(四)
    ADO.NET的记忆碎片(八)
    卡特兰数 应用
    hdu 1249 三角形
    hdu 1143
    nyist 93 汉诺塔(三)
    hdu 1123 Train Problem II
    hdu 1133 Buy the Ticket
    hdu 1022 Train Problem I
    nyist 610 定长覆盖
  • 原文地址:https://www.cnblogs.com/ningyanbo/p/5260663.html
Copyright © 2011-2022 走看看