按对象值对对象字典进行排序

Jay*_*Bee 0 javascript sorting object lodash

如果我有一个像这样的 JavaScript 对象:

list = {
    John: {
        DOB: '2017-02-01'
    },
    Rob: {
        DOB: '2016-07-09'
    },
}
Run Code Online (Sandbox Code Playgroud)

我该如何将此对象排序到按其出生日期排序的对象列表中。我已经安装了 lodash,所以使用它是一个选项。

我希望结果是可映射的,即一个数组,例如:

sorted_keys = ['Rob','John']
Run Code Online (Sandbox Code Playgroud)

或者

sorted_array = [
    {
        Rob: {
            DOB: '2016-07-09'   
        }
    },
    {
        John: {
            DOB: '2017-02-01'   
        }
    },
]
Run Code Online (Sandbox Code Playgroud)

Mik*_*rin 5

var list = {
    John: {
        DOB: '2017-02-01'
    },
    Rob: {
        DOB: '2016-07-09'
    }
}

var sortedKeys = Object.keys(list).sort(function(a, b) {
  return new Date(list[a].DOB) - new Date(list[b].DOB)
})

console.log(sortedKeys)
Run Code Online (Sandbox Code Playgroud)

或者使用箭头函数:

let list = {
    John: {
        DOB: '2017-02-01'
    },
    Rob: {
        DOB: '2016-07-09'
    }
}

let sortedKeys = Object.keys(list).sort((a, b) => new Date(list[a].DOB) - new Date(list[b].DOB))

console.log(sortedKeys)
Run Code Online (Sandbox Code Playgroud)

如果有字符串,请回答您的评论:

let list = {
    John: {
        DOB: 'bbb'
    },
    Rob: {
        DOB: 'aaa'
    }
}

let sortedKeys = Object.keys(list).sort((a, b) => {
    if(list[a].DOB < list[b].DOB) return -1;
    if(list[a].DOB > list[b].DOB) return 1;
    return 0;
})

console.log(sortedKeys)
Run Code Online (Sandbox Code Playgroud)