根据值将 JavaScript 对象数组分组到自己的对象子数组中

2023-12-02

我有一个 Javascript 对象数组,如下所示。

        [{

            "email": "[email protected]",
            "fn": "Alex",
            "sn": "McPherson",
            "phone": "01233xxxxx",
            "hours": "40",
            "rate": "20",
            "amount": "200",
            "vat": "60",
            "agency": "test",
            "start": "08/06/2017",
            "end": "10/06/2017"
        },
        {

            "email": "[email protected]",
            "fn": "Mike",
            "sn": "Mann",
            "phone": "01233xxxxx",
            "hours": "50",
            "rate": "70",
            "amount": "500",
            "vat": "90",
            "agency": "test",
            "start": "08/06/2017",
            "end": "10/06/2017"
        },
        {

            "email": "[email protected]",
            "fn": "Fred",
            "sn": "Frogg",
            "phone": "01233xxxxx",
            "hours": "80",
            "rate": "90",
            "amount": "800",
            "vat": "100",
            "agency": "test",
            "start": "08/06/2017",
            "end": "10/06/2017"
        },
        {

            "email": "[email protected]",
            "fn": "Alex",
            "sn": "McPherson",
            "phone": "01233xxxxx",
            "hours": "90",
            "rate": "30",
            "amount": "900",
            "vat": "120",
            "agency": "test",
            "start": "08/06/2017",
            "end": "10/06/2017"
        }]

我理想的情况是将那些具有相同值(电子邮件)的对象分组到自己的对象子数组中,即如果您查看上面的数组,您会看到我有同一个人亚历克斯·麦克弗森的两个条目。我想要做的是,如果可能的话,将下面的内容移动并组合到一个子数组中,对于多次存在的任何其他值也是如此。

    [[{

        "email": "[email protected]",
        "fn": "Alex",
        "sn": "McPherson",
        "phone": "01233xxxxx",
        "hours": "40",
        "rate": "20",
        "amount": "200",
        "vat": "60",
        "agency": "test",
        "start": "08/06/2017",
        "end": "10/06/2017"
    },{

        "email": "[email protected]",
        "fn": "Alex",
        "sn": "McPherson",
        "phone": "01233xxxxx",
        "hours": "90",
        "rate": "30",
        "amount": "900",
        "vat": "120",
        "agency": "test",
        "start": "08/06/2017",
        "end": "10/06/2017"
    }],
    [{

        "email": "[email protected]",
        "fn": "Mike",
        "sn": "Mann",
        "phone": "01233xxxxx",
        "hours": "50",
        "rate": "70",
        "amount": "500",
        "vat": "90",
        "agency": "test",
        "start": "08/06/2017",
        "end": "10/06/2017"
    }],
    [{

        "email": "[email protected]",
        "fn": "Fred",
        "sn": "Frogg",
        "phone": "01233xxxxx",
        "hours": "80",
        "rate": "90",
        "amount": "800",
        "vat": "100",
        "agency": "test",
        "start": "08/06/2017",
        "end": "10/06/2017"
    }]]

我似乎无法集中精力使用阵列。


您可以对同一电子邮件地址及其项目使用哈希表的闭包。

var data = [{ email: "[email protected]", fn: "Alex", sn: "McPherson", phone: "01233xxxxx", hours: "40", rate: "20", amount: "200", vat: "60", agency: "test", start: "08/06/2017", end: "10/06/2017" }, { email: "[email protected]", fn: "Mike", sn: "Mann", phone: "01233xxxxx", hours: "50", rate: "70", amount: "500", vat: "90", agency: "test", start: "08/06/2017", end: "10/06/2017" }, { email: "[email protected]", fn: "Fred", sn: "Frogg", phone: "01233xxxxx", hours: "80", rate: "90", amount: "800", vat: "100", agency: "test", start: "08/06/2017", end: "10/06/2017" }, { email: "[email protected]", fn: "Alex", sn: "McPherson", phone: "01233xxxxx", hours: "90", rate: "30", amount: "900", vat: "120", agency: "test", start: "08/06/2017", end: "10/06/2017" }],
    result = data.reduce(function (hash) {
        return function (r, o) {
            if (!hash[o.email]) {
                hash[o.email] = [];
                r.push(hash[o.email]);
            }
            hash[o.email].push(o)
            return r;
        };
    }(Object.create(null)), []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据值将 JavaScript 对象数组分组到自己的对象子数组中 的相关文章

随机推荐

  • 如何获取“TYPE_3BYTE_BGR”图像的 RGB 值?

    我有一张图片TYPE 3BYTE BGR我想把它转换成TYPE INT RGB 尽管我已经搜索过 但我还没有找到执行此操作的方法 我想逐像素转换图像 然而 似乎BufferedImage getRGB i j 不起作用 如何获取 type
  • Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止

    我对 Verilog 完全陌生 对于我在大学学习的课程 我必须很快了解它的很多内容 我正在摆弄我的 Altera DE2 板和 quartis2 并了解其细节 我正在尝试制作一个通过开关打开和关闭的计数器 到目前为止 计数器根据按键进行计数
  • 扩展 ANTLR3 AST

    使用 ANTLR2 您可以在语法定义文件中定义如下内容 options language CSharp namespace Extended Tokens tokens TOKEN
  • MongoDB Spring 数据 Criteria.all

    在 mongo 控制台中我有 gt db test find id ObjectId 515afcfedba6a529520becfa array key one value 1 key two value 2 id ObjectId 51
  • 将消息时间戳与颤动消息文本字段的尾随右侧右对齐

    正如我在上一篇关于该主题的文章中提到的 多行颤动文本字段占据了所有灵活空间 右填充丑陋 我是一个有点完美主义者 不幸的是 我的 flutter layout fu 并不像我的野心那么强烈 我正在创建一个消息应用程序 并且正在努力向消息框添加
  • 使用 R 加速循环和条件

    我想在 R 中加速这段代码 输入是一个包含整数的 3x3x3 数组 并且基于邻居 如果它们为零 则将它们替换为相应的数字 输出是包含新值的数组 mask roi Start here list neig array 0 dim c 3 3
  • 方向更改时导航到另一个页面

    我将在以下实例中解释我要做什么 我有两个页面 MainPage xaml 方向 Portrait 和 LandscapeLeft xaml 方向 LandscapeLeft 我想从MainPage xaml to LandscapeLeft
  • 无法继续 git rebase

    这是我尝试过的 希望有人能花点时间看看这个并提出一些建议 谢谢 编辑 我相信我已经回答了我自己的问题 https stackoverflow com a 12760672 906794 克隆我的存储库 git clone leoj3n ro
  • 如何在 apache HttpClient 上设置 TLS 版本

    如何更改 HttpClient 上支持的 TLS 版本 我正在做 SSLContext sslContext SSLContext getInstance TLSv1 1 sslContext init keymanagers toArra
  • Rails Devise - 使用关联模型注册用户

    我遇到了一些关于这个主题的问题 但似乎都过时的或者只是糟糕的编码实践 问题 我正在注册用户作为结账流程的一部分 我想在用户注册时收集他们的地址 我有一个用户模型和一个地址模型 我似乎无法弄清楚如何正确覆盖 Devise 的注册控制器以允许附
  • F# 中的 2D 数组上的 Foreach 使编译器认为迭代值是对象类型。为什么?

    我在这个看似简单的问题上遇到了麻烦 let xs Array2D init 3 3 fun j i gt j 3 i printfn O xs GetType prints System Int32 for v in xs do print
  • 使用 JQuery/JavaScript 表示 html 表中各种数组中的字符

    我在 Hangman 游戏中通过 J Query 以图形方式表示一些数据时遇到了一些问题 现在我正在研究 play space 函数的最后一部分 以考虑是否有多个正确猜测的数据单词中的字母并显示该字母的所有实例 我创建了一个函数来循环遍历由
  • fscanf 是否可以返回零并同时消耗输入?

    是否有可能fscanf消耗输入并同时返回零 例如 如果我写 int res int k fscanf f d res 并检查一下k 0 我可以确定下一次调用fscanf在同一个文件上f将在调用之前文件所在的同一位置继续fscanf 中概述的
  • 合并 UIImage 并将其包裹在杯子上

    我有两个图像 我想合并这两个图像 就像我有一个杯子的图像 第二个图像是任何图像 现在我想与它合并到杯子中 我怎样才能实现这一点 就像放置在杯子上的图像必须首先包裹起来 就像我从相机拍照然后将其粘贴到杯子中一样 但是我如何包裹该图像 Akhi
  • 如何使 Segue 传递数据并且仅在满足特定条件时执行

    我有一个带有按钮的登录页面 当我单击它时 当且仅当登录成功时 我想将数据传递给另一个类 使用属性 我尝试在按钮上使用 Segue 来传递数据 但问题是这个 Segue 总是转到下一个视图 即使登录不成功 在这种情况下也不应该 void pr
  • WPF依赖属性枚举集合

    我有一个枚举列出了所有可能的设置 public enum Settings Settings1 Settings2 Settings3 在我的用户控件中 我想实现一个新的依赖属性 它包含一个设置列表并能够像这样使用它
  • jquery Datepicker如何设置一些日期来突出显示?

    我使用 jquery Datepicker 链接 http docs jquery com UI Datepicker 现在 如果我想设置一些日期来突出显示 而不仅仅是现在突出显示日期 我该如何设置该选项 For example 我想重点强
  • UIActionSheet 中的键盘未键入任何内容

    我想知道为什么由 UITextField 打开的 iPhone 键盘除了文本字段本身内的删除键和清除按钮之外不输入任何内容 文本字段通过以下代码示例嵌入到 UIActionSheet 中 setup UITextField for the
  • 如何使用Require.js加载Q库?

    我的图书馆使用kriskowal Q 承诺库现在我正在尝试加载 使用 requirejs 使用我的库的应用程序 因此我将所有路径和垫片以及我的requirejs config部分如下所示 requirejs config baseUrl c
  • 根据值将 JavaScript 对象数组分组到自己的对象子数组中

    我有一个 Javascript 对象数组 如下所示 email email protected fn Alex sn McPherson phone 01233xxxxx hours 40 rate 20 amount 200 vat 60