使用 Lodash 或 Underscore 按多列对对象进行分组

2024-02-11

我有以下对象records:

 {  
   "notes":[  
      {  
         "id":1,
         "description":"hey",
         "userId":2,
         "replyToId":null,
         "postId":2,
         "parentId":null
      },
      {  
         "id":5,
         "description":"hey test",
         "userId":3,
         "replyToId":null,
         "postId":2,
         "parentId":null
      },
      {  
         "id":2,
         "description":"how are you",
         "userId":null,
         "replyToId":2,
         "postId":2,
         "parentId":null,
         "user":null
      }
   ]
}

我想将其输出为:

2 
  object with id 1
  object with id 2 (because replyToId value is same as userId
3
  object with id 5

所以基本上我想考虑同一组下的UserId和replyToId值。

我在 lodash 下构建了自己的 mixin,将 groupBy 方法包装为:

mixin({
    splitGroupBy: function(list, groupByIter){
        if (_.isArray(groupByIter)) {
            function groupBy(obj) {
                return _.forEach(groupByIter, function (key){
                    if ( !!obj[key] ) return obj[key]
                });

            }
        } else {
            var groupBy = groupByIter;
        }

        debugger;

        var groups = _.groupBy(list, groupBy);

        return groups;
    }
});

调用看起来像这样:

_.splitGroupBy(data.notes,['userId', 'replyToId']);

输出没有分组。即使我尝试过_.map反而_.forEach分裂没有正确发生。


使用下划线的解决方案:

    var props = ['userId', 'replyToId'];

    var notNull = _.negate(_.isNull);

    var groups = _.groupBy(record.notes, function(note){
        return _.find(_.pick(note, props), notNull);
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Lodash 或 Underscore 按多列对对象进行分组 的相关文章

随机推荐

  • numpy 与非数字数据的列表

    用于数值数据的 Numpy 数组显然效果很好 但是将它们用于非数值数据是否会更慢 例如 假设我有一些嵌套的文本数据列表 mammals dog cat rat birds stork robin penguin animals1 mamma
  • 如何使用单个 SqlCommand 插入记录并返回新创建的 ID?

    我正在使用 SqlCommand 对象将记录插入到具有自动生成的主键的表中 如何编写命令文本 以便在使用 ExecuteScalar 方法时获取新创建的 ID INSERT INTO YourTable val1 val2 val3 VAL
  • 如何在 ngClass 中使用 AngularJS 过滤器?

    我目前正在学习 AngularJS 并使用教程 我正在修改教程示例过滤器以返回一些字符串 angular module phonecatFilters filter checkmark function return function in
  • 使用动态列名称和动态值的 Dplyr 过滤器

    有人问了同样的问题here https stackoverflow com questions 38563885 dplyr filter using dynamic column name and value并标记为重复项 然而 它不是重
  • `void foo(int a[static 0]);` 有效吗?

    以下函数是否严格符合C99 void foo int a static 0 void a GCC 和 Clang 都会发出有关使用零大小数组的警告 但我认为这个警告是不合理的 据我所知 6 7 6 3p7 https port70 net
  • 识别 C# 列表中的唯一值

    我创建了一个类 如下所示 来表示复合主键模型 public class PrimaryKeyModel public string ColumnName get set public string ColumnValue get set p
  • Vega-lite:轴中标签的换行或自动换行

    我试图将 x 轴的标签包裹在下一行 因为标签长度很长 那么有没有什么办法可以实现呢 我尝试使用calculate and labelExpr通过破坏标签字符串 然后使用 n 连接它们 但这似乎不起作用 是否有任何其他配置可以帮助我实现此用例
  • 如何在Python中加入MongoDB集合?

    如何在 Python 中连接 在 SQL 的 INNER JOIN 意义上 两个 MongoDB 集合 我是否需要使用本机映射 减少 JavaScript 代码或在 PyMongo 中执行此操作 如何用更少的代码解决这个问题 Mongo 存
  • UWP 项目不支持触发器元素 (XAML)

    我正在为 Windows 10 开发通用 Windows 应用程序 我发现的第一件事是在设置图像样式时不支持触发器元素 XAML 这是我试图实现的代码 抱歉 我必须在这里使用图像 我是从我的虚拟机获取它的 这种类型的触发器现在如何在通用 W
  • 访问 Flask 中传入的 POST 数据

    这是烧瓶代码 from flask import Flask request import json app Flask name app route methods GET POST def refresh params thing1 r
  • 如何阻止 iOS 启动图像在 Phonegap / Sencha Touch 中向上移动

    我有一个 Sencha Touch 1 1 Phonegap 1 3 应用程序 并且有一个根据 iOS 文档调整大小的纵向和横向启动图像 当应用程序首次启动时 两个启动图像都正确定位 显示加载旋转器后 启动图像会垂直移动少量 在屏幕底部留下
  • Boost::Asio:为什么 async_write 在通过给定套接字发送缓冲区时会截断缓冲区?

    我目前正在尝试设计一个相当简单的boost asio服务器 我的第一个单元测试相当简单 发送 JSON 请求 COMMAND ADD 1 VALUE 1 并收到以下回复 SUCCESS true VALUE 2 然而 相反 回复在被截断后被
  • 引起原因:java.sql.SQLException:用户“root”@“localhost”访问被拒绝(使用密码:YES)

    当我尝试运行该应用程序时 出现以下错误 见下文 已经尝试过类似主题上发布的解决方案 Exception in thread main org springframework jdbc CannotGetJdbcConnectionExcep
  • 在 R 数据框中创建所有可能的列排列

    我有一个看起来像这样的 df code 1 code 2 code 3 code 4 1 82 93 NA NA 2 15 85 93 NA 3 93 89 NA NA 4 81 NA NA NA 我想生成一个新的 df 它包含所有可能的列
  • 在 Go 中创建迭代器最惯用的方法是什么?

    一种选择是使用渠道 通道在某种程度上就像迭代器 您可以使用 range 关键字迭代它们 但是当你发现你无法在不泄漏 goroutine 的情况下跳出这个循环时 使用就会受到限制 在 Go 中创建迭代器模式的惯用方法是什么 Edit 渠道的根
  • 为什么 Grails 中唯一约束字段更新失败

    当我在域类中映射自定义身份属性时 为什么 hibernate 要检查唯一约束 当我更新对象时 尽管发布的字段值与数据库中存储的值相同 但验证失败 即使我没有对表单进行任何更改 确保 dirty false 并且没有属性绑定错误 也会发生这种
  • SqlDependency 与 SqlCacheDependency

    它们之间的主要区别是什么以及何时应该使用它们 我最初的理解是 SqlCacheDependency 使用轮询 但我读到它对于 ASP NET 2 0 也没有 我想知道哪个最适合在 ASP NET Web 服务器下缓存 linq 查询 这将是
  • 在后台接收推送通知

    我知道很多地方都涉及到这一点 但我无法弄清楚 我使用 Urban Airship 来推送通知 一切似乎都很好 除了当我的应用程序在后台时 didReceiveRemoteNotification没有接到电话 它在前台运行 我能够正确处理消息
  • Echo PHP 变量作为输入字段的值[重复]

    这个问题在这里已经有答案了 我有一个带有多个输入标签的简单 HTML 表单 在页面加载时 我向表单提供数据以回显数据库中字段的当前值 然后用户可以修改这些值并再次提交以执行更新
  • 使用 Lodash 或 Underscore 按多列对对象进行分组

    我有以下对象records notes id 1 description hey userId 2 replyToId null postId 2 parentId null id 5 description hey test userId