Sorting two arrays according to one
Sort array of names by characters count
In this example, I have a list of names that I want to sort by width (number of characters) in descending order: from long to short.

main();
function main() {
var n, k, j, sortedNames,
namesLength = [], // Make an array of name lengths
unsortedNames = [];
// Array of names
var names = [ "Charlotte",
"Alarna",
"Albie",
"Freya",
"Ollie",
"Alexandria",
"Grayson",
"Lily",
"Freya",
"Kourtney",
"Amelia",
"Dylan",
"Mila",
"Liam",
"Esme",
"Brody",
"Brooke",
"Ava",
"Maddison",
"Kayla",
"Grace",
"Sean",
"Oliver",
"Max",
"Charlie",
"Beyonce-Honey",
"Abigail",
"Leonora",
"Alfie",
"Willow",
"Scarlet",
"Annabelle" ];
for (n = 0; n < names.length; n++) {
namesLength.push(names[n].length);
}
for (k = 0; k < names.length; k++) {
unsortedNames.push({
name: names[k],
namesLength: namesLength[k]
});
}
// Now sorting the array by ‘namesLength’ in descending order
// For ascending order swap a and b: a.namesLength - b.namesLength
sortedNames = unsortedNames.sort(function(a, b) { return b.namesLength - a.namesLength; });
for (var j = 0; j < sortedNames.length; j++) {
$.writeln(sortedNames[j].name + " --> " + sortedNames[j].namesLength);
}
}
Click here to download this snippet.
