/* * 快速排序,按某個屬性,或按「獲取排序依據的函數」,來排序. * @method soryBy * @static * @param {array} arr 待處理數組 * @param {string|function} prop 排序依據屬性,獲取 * @param {boolean} desc 降序 * @return {array} 返回排序後的新數組 */ var 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; };