Search code examples
javascriptlodash

Trying to sort object keys based on child property


I have this object:

var myObject = {
    cat: {
        order: 1
    },

    mouse: {
        order: 4
    },

    dog: {
        order: 2
    },   

    shark: {
        order: 3
    }
}

I'm trying to get back: ["cat", "dog", "shark", "mouse"]

I tried:

_.sortBy(x, function(e) { return e.order} )


Solution

  • You can simply use Object.keys() and Array.sort() for it.

    • get all the keys from the Object using Object.keys().
    • Simply sort all the keys by passing a custom Comparator to the sort function which compares the order property of the keys in the object.

    var myObject = { cat: { order: 1 }, mouse: { order: 4 }, dog: { order: 2 }, shark: { order: 3 } };
    
    let result = Object.keys(myObject).sort((a,b)=> myObject[a].order -  myObject[b].order);
    
    console.log(result);