JSFiddle - React, Tailwind, and code Playground
by jongobar
HTML
<pre id="out"></pre>
JavaScript
var dbg=[];
dbg.targetNode=document.getElementById("out");
dbg.out=function (msg){
if(msg){
this.targetNode.textContent=msg;
return;
}
this.targetNode.textContent=this.join('\n');
};
var list = [
{str:'zzzzz',value:3},
{str:'aaaaa',value:7},
{str:'ccccc',value:1}
];
var sortedList=sortData(
list,
function(obj){return obj.str;},
null
);
dbg.push(JSON.stringify(sortedList,null," "));
dbg.out();
function sortData(list,callbackDefereneceSortValue,callbackCompare){
callbackDefereneceSortValue=callbackDefereneceSortValue||function(item){
return item.trim().toLowerCase();
};
callbackCompare=callbackCompare||function(sortStringA,sortStringB){
if(sortStringA < sortStringB){return -1;}
if(sortStringA > sortStringB){return 1;}
return 0;
};
var sortingWrapper=list.map(function(item){
var sortString=callbackDefereneceSortValue(item);
return {
sortString:sortString,
payload:item,
};
});
sortingWrapper.sort(function(wrapperA,wrapperB){
return callbackCompare(wrapperA.sortString,wrapperB.sortString);
});
return sortingWrapper.map(function(wrapper){
return wrapper.payload;
});
}