分页
/**
* 分页 arr原始数组,pageSize每页多少条数据
*/
const paging = (arr,pageSize)=>{
let obj = {}
for(var i = 0 ; i < arr.length;i++){
let key = Math.floor(i / pageSize) + 1
if(!(key in obj)){
obj[k] = [arr[i]]
}else{
obj[k].push(arr[i])
}
}
return obj //{1:[{},{}],2:[{},{}]}
}
排序
方法一:sort排序(冒泡排序)
/**
* 表格排序 arr1需要排序的数组,order需要排序的值
*/
const sortArr = (arr1,order)=>{
if(arr1.length == 0 || order == ""){
return arr1
}else{
let arr = [...arr1]
let str = arr.split(" ")[0] //需要排序的值
let rule = arr.split(' ')[1] //排序规则 asc降序,desc升序
arr.sort(function(x,y){
if(x[str] >= y[str]){
return rule == 'asc'?-1:1
}else{
return rule == 'asc'?1:-1
}
})
return arr
}
}
方法二:快速排序
/*第一种
* 快速排序,按某个属性,或按“获取排序依据的函数”,来排序.
* @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 {
throw '参数类型错误';
}
props.sort();
for(i=0; i<len; i++) {
ret[i] = props[i]._obj;
}
if(desc === 'desc') ret.reverse();
return ret;
};
/*
* 第二种
*/
var quickSort = function(arr,key,rule) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if(rule == 'desc'){
if (arr[i][key] < pivot[key]) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}else{
if (arr[i][key] > pivot[key]) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
}
return quickSort(left,key,rule).concat([pivot], quickSort(right,key,rule));
};