JSFiddle - React, Tailwind, and code Playground
by Khalil Zhang
JavaScript
Array.prototype.sort = function (sortNumber) {
if (this.length < 2) {
return this;
}
if (Object.prototype.toString.call(sortNumber) != '[object Function]') {
throw new TypeError('Sort Function is not a function');
}
var middle = Math.floor(this.length / 2),
left = this.slice(0, middle),
right = this.slice(middle),
params = merge(left.sort(sortNumber), right.sort(sortNumber), sortNumber);
params.unshift(0, this.length);
this.splice.apply(this, params);
return this;
}
function merge(left, right, sortNumber) {
var result = [],
il = 0,
ir = 0;
while (il < left.length && ir < right.length) {
/*
if (left[il] < right[ir]) {
result.push(left[il++]);
} else {
result.push(right[ir++]);
}*/
var r = sortNumber(left[il], right[ir]);
if (r < 0) {
result.push(left[il++]);
} else if (r > 0) {
result.push(right[ir++]);
}
}
return result.concat(left.slice(il)).concat(right.slice(ir));
}
function sortNumber(a, b) {
return a - b;
}
alert(["10", 12, 8, "5", 15].sort(sortNumber));