Lodash orderBy通过对象数组中的对象

用户名

我有一个数组:

const names = [{name: 'a', equal: 3},
{name: 'b', equal: 2},
{name: 'c', equal: 2},
{name: 'd', equal: 3},
{name: 'a1', equal: 1}]

我正在运行_.groupBy(names,'equal'),结果是:

{1: [{equal: 1, name: 'a1'}],
 2: [{equal: 2, name: 'b'}, {equal: 2, name: 'c'}],
 3: [{equal: 3, name: 'a'}, {equal: 3, name: 'd'}]}

但是,这里的名称排序消失了。如何在该对象中按名称排序?

更新资料

我想得到:

{3: [{equal: 3, name: 'a'}, {equal: 3, name: 'd'}],
 1: [{equal: 1, name: 'a1'}],
 2: [{equal: 2, name: 'b'}, {equal: 2, name: 'c'}]}
妮娜·斯科茨(Nina Scholz)

通过使用数组作为结果集,可以在分组后稍后对其进行排序。

var names = [{ name: 'a', equal: 3 }, { name: 'b', equal: 2 }, { name: 'c', equal: 2 }, { name: 'd', equal: 3 }, { name: 'a1', equal: 1 }],
    equals = {},
    result = [];

names.forEach(function (o) {
    if (!equals[o.equal]) {
        equals[o.equal] = [];
        result.push(equals[o.equal]);
    }
    equals[o.equal].push(o);
});

result.sort(function (a, b) {
    return a[0].name.localeCompare(b[0].name);
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章