将键上的对象数组和总和值减少到数组中

2024-05-06

我有以下对象:

data = [
  { name: 'foo', type: 'fizz', val: 9 },
  { name: 'foo', type: 'buzz', val: 3 },
  { name: 'bar', type: 'fizz', val: 4 },
  { name: 'bar', type: 'buzz', val: 7 },
];

并使用 lodash 地图:

result = _.map(data, function item, idx){
  return {
    key: item[key],
    values: item.value,
  }
}

结果是:

[
  { key: foo, val: 9 },
  { key: foo, val: 3 },
  { key: bar, val: 4 },
  { key: bar, val: 7 },
]

但现在我正在尝试返回:

[
  { key: 'foo', val: 12 },
  { key: 'bar', val: 11 },
]

我尝试使用reduce,它似乎只输出到单个对象,然后我可以将其转换回数组,但我觉得必须有一种优雅的方法来使用lodash从我的源数据直接转到我想要的结果,而无需所有的中间步骤。

我想this https://stackoverflow.com/questions/32659248/reduce-an-array-of-objects-and-sum-property-for-each-distinct-object正在解决我的确切问题,但似乎只需将对象转换为上面概述的所需对象数组就需要相当多的工作。

Cheers.


对使用的已接受答案的扭曲groupBy http://underscorejs.org/#groupBy而不是减少进行初始分组:

var result = _.chain(data)
    .groupBy('name')
    .map((group, key) => ({ key, val : _.sumBy(group, 'val') }))
    .value();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将键上的对象数组和总和值减少到数组中 的相关文章

随机推荐

  • 如何从特定 Sourceforge 项目下载所有文件?

    在花了大约一个小时从 sourceforge 下载几乎每个 Msys 包之后 我想知道是否有更聪明的方法来做到这一点 是否可以使用 wget 来实现此目的 我已经成功地使用了这个脚本 https github com SpiritQuadd
  • 文件/文件夹结构的递归搜索

    我正在尝试为返回文件和文件夹列表的 Web 服务构建递归搜索功能 我创建了这两个方法 因此它们充当递归搜索 它首先获取顶级内容 然后将任何文件添加到 fileList 并将任何子文件夹添加到 subFoldersList 我们传入访问级别
  • 无限滚动 jQuery 和 Laravel 5 分页

    我成功从控制器返回数据 public function index posts Post with status verified gt paginate 30 return view show gt with compact posts
  • 使用 PSEXEC 远程启动和停止 Windows 服务

    如何使用 PSEXEC 远程启动和停止 Windows 服务 最好是编写语法我尝试了下面给出的 cmdlet psexec Server u Administrator p Somepassword ServiceName SysInter
  • 虚拟继承 - 跳过构造函数

    我有以下课程 class Socket Socket Socket SOCKET s class Connection public virtual Socket Connection IP ip 这两个类包含一些纯虚函数和一些非虚函数以及
  • useState 由于某种原因没有更新?

    当我尝试使用 axios 从后端 API 获取一些数据 并在由于某种原因获得结果后设置状态时 状态不会更新 当我尝试使用状态时 它只会向我显示一个空数组 但有趣的是当我console log res data 它会毫无问题地向我显示我的列表
  • 设置restrict_xpaths设置后出现UnicodeEncodeError

    我是 python 和 scrapy 的新手 将restrict xpaths 设置设置为 table class lista 后 我收到了以下回溯 奇怪的是 通过使用其他 xpath 规则 爬虫可以正常工作 Traceback most
  • 如何使您的 GWT 应用程序可插入?

    我正在 与我的团队 编写一个 GWT 应用程序 它解析并表示一些特定于领域的语言 例如 使用文本 视频和 UI 控件播放媒体演示 所以应用程序有一组组件 一个 用于保存模型 一个 用于控制例程 控制器 当然我们还有视图类 现在我们遇到了一个
  • 如何检查打开的跨域窗口是否准备好接收postmessage?

    我从另一个域启动一个 URL 然后向它发送消息 const child window open http urlfromanotherdomain com child postMessage you cant handle the mess
  • 有没有办法在 vscode 片段前缀中使用正则表达式?

    我阅读了该文档 似乎正则表达式仅在代码片段正文中使用 正则表达式只能用于转换代码片段正文中的代码片段变量 但您可以放置 多个代码片段前缀 如下所示 stripLastDirectory prefix lsd lsf lsq body TM
  • Java 中的 ConcurrentHashMap 和 Hashtable [重复]

    这个问题在这里已经有答案了 Java 中的 ConcurrentHashMap 和 Hashtable 有什么区别 哪个对于线程应用程序更有效 ConcurrentHashMap 和 Hashtable 锁定机制 Hashtable属于Co
  • 使用信用卡和支付网关进行年龄验证

    我正在开发一个游戏网站 用户必须年满 18 岁才能付款并开始游戏 我正在寻找一种解决方案来使用用户通过网站付款的信用卡来验证年龄 是否可以借助任何公认的支付网关来验证持卡人的年龄 是否可以通过任何方式验证持卡人的年龄 公认的支付网关 我 1
  • 如果应用程序被杀死,小米手机中不会收到 GCM 推送通知

    我将 GCM 集成到我的项目中以接收来自服务器的推送通知 我能够在所有设备 Nexus 三星等 中成功接收推送通知 但是 我在小米手机上收不到通知 当应用程序正在运行或在后台时 我会收到通知 但是如果我终止该应用程序 通过将应用程序从最近的
  • Python二进制数据读取

    urllib2 请求接收二进制响应 如下所示 00 00 00 01 00 04 41 4D 54 44 00 00 00 00 02 41 97 33 33 41 99 5C 29 41 90 3D 71 41 91 D7 0A 47 0
  • C 中的静态和外部内联函数[重复]

    这个问题在这里已经有答案了 我正在尝试详细了解静态函数和外部函数之间的区别 我知道静态内联函数和外部内联函数之间的基本区别 我的理解如有错误请指正 静态内联函数仅对定义它的翻译单元可见 外部内联函数可以在多个翻译单元中访问 最好在头文件中定
  • ElasticSearch 定义自定义映射与默认“_doc”映射冲突

    尝试创建自定义映射类型时会发生此问题 为第一个插入弹性创建自定义映射后想要创建 doc映射类型和冲突就发生在这里 第一步我创建一个映射 mappings properties field1 type keyword field2 type
  • Three.js - 将 WebGL 和 CSS3D 与 iFrame 混合

    我准备了一个混合的工作页面WebGL and CSS3D 在SO的一点帮助下here https stackoverflow com questions 24681170 three js properly blending css3d a
  • 使用 PHP 连接到 Amazon RDS

    我正在尝试将 RDS 实例与 PHP 连接文件连接 这是我的文件中的内容 define DB SERVER localhost define DB USERNAME User Name define DB PASSWORD Password
  • Ruby On Rails - 在控制器中使用关注点

    可能的菜鸟警告 刚接触 RoR 我正在尝试在 RoR 中使用关注点 现在我只写了一个非常简单的问题 app controllers concerns foo rb module Foo extend ActiveSupport Concer
  • 将键上的对象数组和总和值减少到数组中

    我有以下对象 data name foo type fizz val 9 name foo type buzz val 3 name bar type fizz val 4 name bar type buzz val 7 并使用 loda