Lodash orderBy 对嵌套对象数组的影响
拥有一个具有某些嵌套属性的对象数组:
const sports = [{
name: "Basketball",
leagues: [{
createdAt: 1
}, {
createdAt: 2
}]
},{
name: "Soccer",
leagues: [{
createdAt: 3
}, {
createdAt: 4
}]
}]
要获取按名称 DESC (Z->A) (非嵌套属性)排序的对象数组,我会这样做:
const sorted = _.orderBy(sports, item => item.name, ['desc']);
结果是
[{ name: "Soccer", ... },{ name: "Basketball", ... }]
我想要实现的是基于该对象进行排序在其嵌套的对象数组上 leagues.createdAt
DESC (假设 1,2,3,4 是正确的时间戳):
[{
name: "Soccer",
leagues: [{
createdAt: 4
}, {
createdAt: 3
}]
},{
name: "Basketball",
leagues: [{
createdAt: 2
}, {
createdAt: 1
}]
}]
尝试这样做:
const sorted = _.orderBy(sports, [(item) => item.leagues[0].createdAt], ["desc"])
但顺序不太正确:
Have an array of objects with some nested properties:
const sports = [{
name: "Basketball",
leagues: [{
createdAt: 1
}, {
createdAt: 2
}]
},{
name: "Soccer",
leagues: [{
createdAt: 3
}, {
createdAt: 4
}]
}]
To get the array of object sorted by name DESC (Z->A) (non nested property) I do:
const sorted = _.orderBy(sports, item => item.name, ['desc']);
The result is
[{ name: "Soccer", ... },{ name: "Basketball", ... }]
What I am trying to achieve is to sort this object based on its nested array of objects leagues.createdAt
DESC (assuming 1,2,3,4 are the correct timestamps):
[{
name: "Soccer",
leagues: [{
createdAt: 4
}, {
createdAt: 3
}]
},{
name: "Basketball",
leagues: [{
createdAt: 2
}, {
createdAt: 1
}]
}]
Tried to do smth like that:
const sorted = _.orderBy(sports, [(item) => item.leagues[0].createdAt], ["desc"])
but the order is not quite right:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要映射有序数组,并使用
_.orderBy()
对leagues
进行排序。我使用_.flow()
创建一个函数,该函数首先对整个数组进行排序,然后对每个对象中的leagues
进行映射和排序。You'll need to map the ordered array, and sort the
leagues
using_.orderBy()
. I'm using_.flow()
to create a function that first sorts the entire array, and then maps and sorts theleagues
in each object.