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

        /*
        * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序.
        * @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);

 

posted @ 2016-03-10 09:47  求知若渴,虚怀若愚  阅读(198)  评论(0编辑  收藏  举报
原来是这样!我和我的小伙伴都惊呆了!