首页 > 解决方案 > 按较低级别的项目对多层对象进行排序

问题描述

我有一个看起来像这样的对象

[{group: 'Group-B', items[{ count : 3, item : 'item-A' }]},
 {group: 'Group-B', items[{ count : 8, item : 'item-C' }]},
 {group: 'Group-A', items[{ count : 4, item : 'item-H' }]},
 {group: 'Group-C', items[{ count : 2, item : 'item-F' }]}
]

结果应为: desc by count

[{group: 'Group-B', items[{ count : 8, item : 'item-C' }]},
 {group: 'Group-A', items[{ count : 4, item : 'item-H' }]},
 {group: 'Group-B', items[{ count : 3, item : 'item-A' }]},
 {group: 'Group-C', items[{ count : 2, item : 'item-F' }]}
]

我需要对整个对象进行排序count
我一直在看lodash,但我无法弄清楚如何做到这一点。

在此处输入图像描述

标签: javascriptlodash

解决方案


希望能帮助到你。如果您不想创建原始数组的副本,可以删除 .slice() 函数。

let obj = [
    {group: 'Group-B', items: [{count: 3, item: 'item-A'}]},
    {group: 'Group-B', items: [{count: 8, item: 'item-C'}]},
    {group: 'Group-A', items: [{count: 4, item: 'item-H'}]},
    {group: 'Group-C', items: [{count: 2, item: 'item-F'}]}
]
console.log(obj)

let sorted = obj.slice().sort((a,b) => {
    if(a.items[0].count < b.items[0].count){
        return -1
    }
    if(a.items[0].count > b.items[0].count){
        return 1
    }
    else
        return 0
});
console.log(sorted)


推荐阅读