underscore sorts

by abenrob

JavaScript

function outputJSON(input) {
    document.body.appendChild(document.createElement('pre'))
        .innerHTML = JSON.stringify(input, null, 2);
}

var attrs = [
    {name:'east', score: 90, weather:'mild'},
    {name:'south', score: 60, weather:'warm'},
    {name:'west', score: 100, weather:'hot'},
];
var categories = ['warm','mild','hot']
var sortOrder = ['hot','warm','mild']

var sorted = function(arr){
    return _.sortBy(arr, function(itm){
        var sorter = itm;
        if (_.isObject(itm)){
            sorter = itm.weather;
        }
        return _.indexOf(sortOrder, sorter);
    });
};

outputJSON(sorted(attrs));
outputJSON(sorted(categories));