so/29323758

by rudiedirkx

JavaScript

var list = [
    {"name": "Steve", "age": 27, "color": "Blue"},
    {"name": "Joe", "age": 28, "color": "Red"},
    {"name": "John", "age": 30, "color": "Green"},
    {"name": "Jane", "age": 33, "color": "Blue"},
    {"name": "Julie", "age": 35, "color": "Blue"},
    {"name": "Kevin", "age": 40, "color": "Red"}
];

sort('color', 'Red');

function sort() {
    console.log('ORDER BY (color = Red) DESC, color ASC, age ASC:');
    console.log(
        list.sort(function(a, b) {
            if (a.color == 'Red') {
                if (b.color == 'Red') {
                    return a.age - b.age;
                }
                return -1;
            }
            
            if (b.color == 'Red') {
                return 1;
            }
            
            if (a.color == b.color) {
                return a.age - b.age;
            }
            
            return a.color < b.color ? -1 : 1;
        }).map(function(item) {
            return item.name + " \t" + item.age + "\t" + item.color;
        }).join("\n")
    );
}