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 array1 = ['zzzzz', 'aaaaaa', 'ccccc'];
var array2 = [3, 7, 1];
var indices=arrVirtualSortGetIndices(array1);
var array2sorted=arrReorderByIndices(array2,indices);
dbg.push(array2sorted);
dbg.out();
function arrVirtualSortGetIndices(array,fnCompare){
var index=array.map(function(e,i,a){return i;});
fnCompare=fnCompare || defaultStringCompare;
var idxCompare=function (aa,bb){return fnCompare(array[aa],array[bb]);};
index.sort(idxCompare);
return index;
function defaultStringCompare(aa,bb){
if(aa<bb)return -1;
if(bb<aa)return 1;
return 0;
}
function defaultNumericalCompare(aa,bb){
return aa-bb;
}
}
function arrReorderByIndices(array,indices){
return array.map(
function(el,ix,ar){
return ar[indices[ix]];
}
);
}