【发布时间】:2019-09-30 09:59:31
【问题描述】:
我正在尝试根据对象键的子字符串将对象分组为更有条理的结构。
下面是我传递的对象的示例:
var data = {
"summ_example_1": {
"value": 40464.284237
},
"summ_example_number_2": {
"value": 39260.605837
},
"in_process_example_1": {
"count": 10,
"value": 10
},
"in_process_example_2": {
"count": 12,
"value": 12.5
},
"in_process_example_3": {
"count": 0,
"value": 0
},
"awaiting_example_1": {
"count": 17,
},
"awaiting_example_2": {
"count": 51,
}
}
我想要的输出是:
{ summ:
["summ_example_1": {"value": 40464.284237},
"summ_example_number_2": {"value": 39260.605837}],
in:
["in_process_example_1": {"count": 10, "value": 10},
"in_process_example_2": {"count": 12, "value": 12.5},
"in_process_example_3": {"count": 0, "value": 0}],
awaiting:
["awaiting_example_1": {"count": 17},
"awaiting_example_2": {"count": 51"}]}
我尝试在 Lodash 和 Underscore.js 中使用 groupBy 对对象进行分组,但没有任何运气。
在下划线内我可以使用以下代码(请注意,这在 Lodash 中不起作用,因为我似乎无法获取 Object Key 的值:
var grouped = _.groupBy(data, function(val, key){
return key.substr(0, key.indexOf('_'));
});
产生以下输出:
{ summ:
[{"value": 40464.284237},
{"value": 39260.605837}],
in:
[{"count": 10, "value": 10},
{"count": 12, "value": 12.5},
{"count": 0, "value": 0}],
awaiting:
[{"count": 17},
{"count": 51"}]}
但是我想将对象键保留在我的输出中,并且您可以看到它正在删除它们。
我正在做的事情可能吗?
抱歉,如果这没有意义或已经被问过,但我一直在寻找解决方案的时间超出了我的预期,并且开始没有想法了。
感谢您抽出宝贵时间阅读本文,如有任何问题,请随时提出!
【问题讨论】:
-
顺便说一句,您的组必须是对象,而不是数组。
-
您的预期输出无效。
-
为此道歉,一定是在写问题时忽略了我的输出结构。
标签: javascript underscore.js lodash