javascript - UndescoreJS - 将对象属性转换为数组

标签 javascript angularjs underscore.js chart.js

情况很简单 - 我有一个对象列表:

[
{"id":"0001","status":"prod"},  
{"id":"0002","status":"prod"},  
{"id":"0003","status":"prod"},  
{"id":"0004","status":"prod"},  
{"id":"0005","status":"dev"},  
{"id":"0006","status":"dev"}
]

当我使用_.groupBy('status')时,结果是:

{
    prod: [{"id":"0001","status":"prod"},  
        {"id":"0002","status":"prod"},  
        {"id":"0003","status":"prod"},  
        {"id":"0004","status":"prod"}],
    dev: [{"id":"0005","status":"dev"},  
        {"id":"0006","status":"dev"}]
}

但我需要像下面的代码那样的结果发送到 Chart.js(使用 Underscorejs):

{
    legend: ['prod','dev'],
    data: [4,2]  // Array Length  
}

如何使用 Underscore.js 解决我的问题?

最佳答案

在一条链中,只是为了好玩。

_.chain(data)
  .groupBy('status')
  .mapObject(x => x.length)
  .pairs()
  .unzip()
  .zip(['legend', 'data'])
  .map(x => x.reverse())
  .object()
  .value();

关于javascript - UndescoreJS - 将对象属性转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849992/

相关文章:

javascript - 使用维基百科的 API 从搜索查询中获取结果

javascript - 如何只打开一个弹窗?

angularjs - 是否可以在 Angular JS 的指令中获取当前的 $location ?

jquery - Javascript,从每个循环中获取唯一值或按 value.id 进行分组

javascript - 覆盖 Backbone.js 比较器

javascript - 替代 <body onload ="init ();">

AngularJS - 在 ng-repeat 中使用 indexOf 来显示/隐藏值

javascript - 如何基于 $scope.$watch 属性将 CSS 样式应用于指令内的 ng-repeat 元素?

javascript - underscore.js 的替代解决方案

javascript - 文档创建后可以立即获取 key 吗?