JS Multisort
Sort one array as if it were another.
by donmccurdy
JavaScript
function refSort (targetData, refData) {
// Create an array of indices [0, 1, 2, ...N].
var indices = Object.keys(refData);
// Sort array of indices according to the reference data.
indices.sort(function(indexA, indexB) {
if (refData[indexA] < refData[indexB]) {
return -1;
} else if (refData[indexA] > refData[indexB]) {
return 1;
}
return 0;
});
// Map array of indices to corresponding values of the target array.
return indices.map(function(index) {
return targetData[index];
});
}
var target = [1, 2, 3, 4, 5];
var ref = [10, 9, 8, 7, 6];
alert(refSort(target, ref));