【发布时间】:2017-11-23 00:32:05
【问题描述】:
当使用 lodash 中的 groupby 时,每个组的键都假定为字符串而不是其原始类型
示例:
let p1 = { age: 50 };
let p2 = { age: 130 };
let p3 = { age: 25 };
let groups = _.groupBy([p1, p2, p3], (p: any) => p.age);
let sortedKeys = _.keys(groups).sort();
for (let key of sortedKeys) {
console.log(key);
}
输出:
130 个字符串
25 个字符串
50 个字符串
我知道我可以通过修改 sort() 来解决这个问题
_.keys(groups).sort((k1:any, k2:any) => { return k1-k2; });
但不应该保留groupby 键的原始类型(在本例中为number)吗?
【问题讨论】:
-
因为对象键是字符串
-
您究竟希望发生什么?您是否正在尝试按排序组织对象键?对象键顺序无法保证,也永远不会。
-
尝试按数字分组,然后按该分组排序。不希望分组进行排序,但我希望保留 groupby 的类型
-
是的,正如您所提到的,lodash 的函数不会保留类型。如果你想编写自己的函数,你可以将整数作为键
-
有人知道如何将密钥保存为 int 吗?我有同样的问题。不关心排序。但我的输出需要将键作为整数而不是字符串。
标签: javascript lodash