首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Underscore.js嵌套分组

Underscore.js嵌套分组
EN

Stack Overflow用户
提问于 2014-08-13 20:43:49
回答 2查看 1K关注 0票数 2

我很难从下面的json获得所需的输出

代码语言:javascript
复制
[
 {"Type":"A","Location":"1"},
 {"Type":"A","Location":"2"},
 {"Type":"A","Location":"3"},
 {"Type":"B","Location":"2"},
 {"Type":"B","Location":"3"},
 {"Type":"C","Location":"1"},
 {"Type":"A","Location":"1"},
 {"Type":"A","Location":"1"},
 {"Type":"A","Location":"3"},
 {"Type":"C","Location":"1"},
 {"Type":"C","Location":"1"},
 {"Type":"C","Location":"1"}
]

我的预期产出如下:

代码语言:javascript
复制
[
 {"Type":"A","Count":"6","Locations":
  [
   {"Location":"1","Count":"3"},
   {"Location":"2","Count":"1"},
   {"Location":"3","Count":"2"}
  ]
 },
 {"Type":"B","Count":"2","Locations":
  [
   {"Location":"2","Count":"1"},
   {"Location":"3","Count":"1"}
  ]
 },
 {"Type":"C","Count":"4","Locations":
  [
   {"Location":"1","Count":"4"}
  ]
 }
]

到目前为止,我所拥有的代码将对位置进行分组,并给出计数,但我被内部组困住了

代码语言:javascript
复制
var result = _.chain($scope.incidents)
                    .groupBy("Type")
                    .map(function(value,key){
                        return{
                            Type:key,
                            Count:value.length
                        }
                    }).value();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 21:04:30

试试这个:

代码语言:javascript
复制
var result = _.chain($scope.incidents).groupBy('Type').map(function(value, key) {
  return {
    Count: value.length,
    Type: key,
    Locations: _.chain(value).groupBy('Location').map(function(value, key) {
      return {
        Location: key,
        Count: value.length
      };
    }).value()
  };
}).value();
票数 2
EN

Stack Overflow用户

发布于 2014-08-13 20:59:20

我假设您使用的是Lo,因为下划线似乎没有groupBy(<string>)特性。

无论如何,这里有一个解决方案:

代码语言:javascript
复制
var result = _(list)
    .groupBy('Type')
    .map(function (locations, type) {
        return {
            Type: type,
            Count: locations.length,
            Locations: _(locations)
                .groupBy('Location')
                .map(function (arr, location) {
                    return {
                        Count: arr.length,
                        Location: location
                    };
                }).value()
        };
    }).value();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25295792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档