我有一个数组:
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'}]}
通过使用数组作为结果集,可以在分组后稍后对其进行排序。
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] 删除。
我来说两句