javascript-重写数组排序
JavaScript的Array对象已经内建了sort方法,可以对数组进行排序。如果要重写数组的排序方法,可以通过修改Array.prototype.sort的实现来实现。
例如,以下代码展示了如何通过重写sort方法,使得它能够按照字符串长度进行排序:
Array.prototype.sort = function(compareFunction) {
if (compareFunction === undefined) {
compareFunction = function(a, b) {
return a.toString().length - b.toString().length;
};
}
return Array.prototype.sort.call(this, compareFunction);
};
这里重写了Array.prototype.sort方法,在没有传入比较函数的情况下,默认使用一个比较函数,该函数会比较两个元素的字符串长度,并根据长度大小进行排序。
然后通过调用Array.prototype.sort.call(this, compareFunction)来调用原生的sort方法,以实现排序功能。
以下是使用该方法对一个数组进行排序的示例代码:
var arr = [1, 22, 333, 4, 55];
arr.sort();
console.log(arr); // [1, 4, 22, 55, 333]
arr.sort(function(a, b) {
return b - a;
});
console.log(arr); // [333, 55, 22, 4, 1]
arr.sort();
console.log(arr); // [1, 4, 22, 55, 333]
在第一次调用sort方法时,因为没有传入比较函数,所以默认使用了重写后的比较函数,按照字符串长度排序。
在第二次调用sort方法时,传入了一个比较函数,按照数字大小倒序排序。
在第三次调用sort方法时,没有传入比较函数,所以又使用了重写后的比较函数进行排序。
原文地址: https://www.cveoy.top/t/topic/m44 著作权归作者所有。请勿转载和采集!