例子
let arr = [
{
vo: "5",
phase: "B",
age: 15
},
{
vo: "5",
phase: "C",
age: 15
}, {
vo: "5",
phase: "A"
},
{
vo: "15",
phase: "B"
},
{
vo: "25",
phase: "B"
},
{
vo: "5",
phase: "C",
age: 10
},
{
vo: "25",
phase: "A"
}
];
核心代码实现
function arraySort(arr,...args){
function sortRule(a,b,key){
if(isNaN(a[key]) && isNaN(b[key])){
if(!a[key] || !b[key]) return 0;
if(a[key] < b[key]){
return -1
}else if(a[key] > b[key]){
return 1
}else{
return 0
}
}else{
return a[key] - b[key];
}
}
function _arraySort(type){
let newArr = [];
args.forEach((key,key_index)=>{
newArr = arr.sort(function(a,b){
let isGo = true
if(key_index>0){
args.forEach((k,i) => {
if(i>=key_index) return
isGo = a[k] === b[k]
})
}
if(isGo){
if(type=='asce'){
return sortRule(a,b,key)
}else{
return sortRule(b,a,key)
}
}else{
return 0;
}
})
})
return newArr;
}
function desc(){
return _arraySort('desc');
}
function asce(){
return _arraySort('asce');
}
return {
desc,
asce
}
}
示范
const newArr = arraySort(arr,'vo','phase','age').asce()
console.log(newArr,123);