gpt4 book ai didi

javascript - 使用 lodash 按嵌套属性对对象数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:14 26 4
gpt4 key购买 nike

我有一个像这样的对象数组

[{ 'a': { id: 4 }}, { 'b': { id: 3 }}, { 'c': { id: 2 }}, { 'd': { id : 5 }}]

我想知道 lodash 根据 id 对对象进行排序。我希望收到类似 [‘d’, ‘a’, ‘b’, ‘c’] 的内容。

我试图搜索这个,但没有找到适用于每个对象中不同键的答案。我尝试使用 lodash 的不同功能(很多)来做到这一点。所以我认为可能有一个很好的方法来解决这个问题。

最佳答案

这是一个普通的 JavaScript 解决方案。

由于您希望得到排序后的键作为结果,因此该解决方案不会修改原始数组,这要归功于 sort 之前的第一个 map:

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);

如果您不关心改变原始数组,您可以直接使用 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);

关于javascript - 使用 lodash 按嵌套属性对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54853176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com