实现Array.sort-小红书面试
题目
写一个Array对象的sort方法的实现,可以基于传入的函数排序,比如:
const arr = [3,4,5,1,2]
const res = arr.sort((a,b) => b - a) // [5,4,3,2,1]
解答
给一个最简单的实现,可能有很多漏考虑的情况,仅供参考:
const arr = [3,4,5,1,2]
Array.prototype.sortFun = function(compareFunc){
const originArr = this;
const size = originArr.length;
// const tempArr = [];
for(let i = 0; i < size; i++){
// tempArr[originArr[i]] = 1; // 优化方案,对于整数排序
for(let j = i; j < size; j++){
if(compareFunc(originArr[i], originArr[j]) > 0){
let temp = originArr[i];
originArr[i] = originArr[j];
originArr[j] = temp;
}
}
}
return originArr;
}
const res = arr.sortFun((a,b) => b - a) // [1,2,3,4,5]
print(res)
const res = arr.sortFun((a,b) => a - b) // [1,2,3,4,5]
print(res)
你有好的实现方法,欢迎贴到评论区!