數組按照某個屬性排序

/* 
* 快速排序,按某個屬性,或按「獲取排序依據的函數」,來排序. 
* @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; 
};
相關文章
相關標籤/搜索