【发布时间】:2018-11-03 06:20:56
【问题描述】:
我有以下结构:
let drives = [
{id: 1, moves:[
{moveId: 1, difference: 1},
{moveId: 2, difference: 2}]
},
{id: 2, moves:[
{moveId: 1, difference: -2}]
},
{id: 3, moves:[
{moveId: 1, difference: 5},
{moveId: 2, difference: 2},
{moveId: 3, difference: 4}]
},
{id: 4, moves:[
{moveId: 1, difference: 6}]
}
]
现在我想通过移动的差异对驱动器数组进行排序。结果应该是这样的(取决于排序顺序)。
let drives = [
{id: 2, moves:[
{moveId: 1, difference: -2}]
},
{id: 1, moves:[
{moveId: 1, difference: 1},
{moveId: 2, difference: 2}]
},
{id: 3, moves:[
{moveId: 2, difference: 2},
{moveId: 3, difference: 4},
{moveId: 1, difference: 5}]
},
{id: 4, moves:[
{moveId: 1, difference: 6}]
}
]
我尝试使用 lodash 使用此代码来完成此操作
_.orderBy(drives, 'moves.difference', 'asc');
但这似乎无济于事。 有谁知道如何处理这个问题?
【问题讨论】:
-
嗯..您是指每个驱动程序的差异总和吗?
-
不是移动差异的总和。首先,每个驱动器对象的移动数组应按它们的差异(或任何其他键)排序。之后,驱动器数组应按移动的差异进行排序。 - 我编辑了我的帖子,希望现在更清楚。
-
@michaelT:请看看我的第一部分解决方案。至于第二部分,我已经提出了一个案例,请帮忙回答以便继续
标签: javascript arrays sorting object