JSFiddle - React, Tailwind, and code Playground
JavaScript
var sort = function (el) {
var i = 0,ret;
!sort.el && (sort.el = el);
ret = el.sort (srt);
if (sort.el != el) {
var l = Math.max(el.length,sort.el.length);
for (var j = 0;j<l;j++) {
if (typeof el[j] === "object" && el[j] && el[j]._srt) {}
delete el[j]._srt;
if (typeof sort.el[j] === "object" && sort.el[j] && sort.el[j]._srt) {}
delete sort.el[j]._srt;
}
}
sort.el = el
return ret;
function srt (a,b,c) {
var types = [typeof a,typeof b];
var r = [0,0];
if (types[0] === "object" && types[1] === "object") {
if (el === sort.el) {
!a._srt && (a._srt = ++i);
!b._srt && (b._srt = ++i);
r[0] = a._srt;
r[1] = b._srt;
} else {
a._srt && (r[0] = a._srt)
b._srt && (r[1] = b._srt)
}
return r[0] - r[1];
}
if (types[0] == "object") {
return 1;
}
if (types[1] == "object") {
return -1;
}
return a>b?1:a<b?-1:0;
}
}
var x = {a:1};
var y = {a:2};
console.log("Consistent?", sort([y,x]), sort([x,y]), sort([x,y]));