排序
js快速排序
let a = [{ b: 9 }, { b: 2 }, { b: 10, c: 'ddd' }, { b: 66 }, { b: 33 }];
console.log(this.sortArry(a));
sortArry(arr) {
var self = this;
if (arr.length <= 1) {
return arr;
}
let midIndex = Math.floor(arr.length / 2);
let midarr = arr.splice(midIndex, 1)[0];//取中间值
let left = [], right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i].b < midarr.b) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return self.sortArry(left).concat(midarr, self.sortArry(right));//递归调用连接数组
}
递归前要条件判断退出调用。
利用数组的sort方法进行排序。a-b是升序b-a是降序;
function sortarr(a,b){ return a.b-b.b } var newArr=a.sort(sortarr); 要反过来就调用下reveser() newArr.reveser();
arr.sort(function(a,b){
if(a>b){return 1;
}else{
return -1;}
})
sort的规则:返回值为正数时两个数交换位置,为0时不变
所以return a-b为正常升序,
返回b-a为降序。
浙公网安备 33010602011771号