我有一个像这样的对象数组
[{ ‘a’: { id: 4 }}, { ‘b’: { id: 3 }}, { ‘c’: { id: 2 }}, { ‘d’: { id: 5 }}]
我想知道 lodash 根据 id 对对象进行排序。我希望收到类似[‘d’, ‘a’, ‘b’, ‘c’].
我试图搜索这个,但我没有找到适用于每个对象中不同键的答案。我试图用 lodash 的不同功能(很多)来做到这一点。所以我认为可能有一个很好的方法来解决这个问题。
这是一个简单的 JavaScript 解决方案。
由于您希望获得排序后的键作为结果,此解决方案不会修改原始数组,这要归功于map之前的第一个sort:
const data = [{ 'a': { id: 4 }}, { 'b': { id: 3 }}, { 'c': { id: 2 }}, { 'd': { id: 5 }}];
const sorted = data
.map(x => Object.entries(x)[0])
.sort((a, b) => b[1].id - a[1].id)
.map(x => x[0]);
console.log(sorted);Run Code Online (Sandbox Code Playgroud)
如果你不关心改变原始数组,你可以直接使用排序Object.values(),然后使用返回第一个键Object.keys():
const data = [{ 'a': { id: 4 }}, { 'b': { id: 3 }}, { 'c': { id: 2 }}, { 'd': { id: 5 }}];
const sorted = data
.sort((a, b) => Object.values(b)[0].id - Object.values(a)[0].id)
.map(x => Object.keys(x)[0]);
console.log(sorted);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |