/**数组根据数组对象中的某个属性值进行排序的方法
* 使用例子:newArray.sort(sortNumber('asc', 'data')) //表示根据data属性升序排列;
* @param order desc(降序)、asc(升序)
* @param sortBy 排序的属性
* */
var sortNumber = function (order, sortBy) { //desc(降序)、asc(升序)
var ordAlpah = (order === 'asc') ? '>' : '<';
var sortFun = new Function('a', 'b', 'return a.' + sortBy + ' == b.' + sortBy + '?0: a.' + sortBy + ordAlpah + 'b.' + sortBy + '?1:-1');
return sortFun;
}
/**数组根据数组对象中的某个属性值进行排序的方法
* 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
* @param attr 排序的属性 如number属性
* @param rev true表示升序排列,false降序排序
* */
var sortBy = function(attr, rev){
//第二个参数没有传递 默认升序排列
if(rev === undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
//console.log(a, b, typeof a, typeof b);
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}
}
var arr = [
{dateTime: '2018-09-01 15:20', data: 100.09},
{dateTime: '2018-09-01 15:50', data: 10},
{dateTime: '2018-09-01 15:40', data: 5.02},
{dateTime: '2018-09-06 11:40', data: 15},
{dateTime: '2018-09-01 13:20', data: 5.04},
{dateTime: '2018-09-06 08:40', data: 15},
];
console.log(arr.sort(sortNumber('asc', 'data')));
console.log(arr.sort(sortBy('dateTime',true)));