【问题标题】:Filtering Array of Objects into multiple array of objects based on property [duplicate]根据属性将对象数组过滤为多个对象数组[重复]
【发布时间】:2021-04-21 09:03:08
【问题描述】:

目前,我有一个对象数组

const bankData = [
    {
      "bank": "Chase",
      "monthEndBalance": "72,175.88",
      "bankStatementDate": "2020/10/31"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "93,412.79",
      "bankStatementDate": "2020/07/31"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "88,175.88",
      "bankStatementDate": "2020/11/30"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "102,200.12",
      "bankStatementDate": "2020/12/31"
    },
    {
      "bank": "Goldman Sachs",
      "monthEndBalance": "72,276.12",
      "bankStatementDate": "2020/11/30"
    },
    {
      "bank": "Goldman Sachs",
      "monthEndBalance": "52,276.12",
      "bankStatementDate": "2020/10/31"
    },
    {
      "bank": "Goldman Sachs",
      "monthEndBalance": "102,276.12",
      "bankStatementDate": "2020/12/31"
    },
    {
      "bank": "Wells Fargo",
      "monthEndBalance": "33,276.12",
      "bankStatementDate": "2020/11/30"
    },
    {
      "bank": "Wells Fargo",
      "monthEndBalance": "12,276.12",
      "bankStatementDate": "2020/10/31"
    },
    {
      "bank": "Wells Fargo",
      "monthEndBalance": "150,276.12",
      "bankStatementDate": "2020/12/31"
    }
]

我正在寻找所需的输出,其中每个库将被过滤到它自己的对象数组中。

例如


const bankOne = [
    {
      "bank": "Chase",
      "monthEndBalance": "72,175.88",
      "bankStatementDate": "2020/10/31"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "93,412.79",
      "bankStatementDate": "2020/07/31"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "88,175.88",
      "bankStatementDate": "2020/11/30"
    },
    {
      "bank": "Chase",
      "monthEndBalance": "102,200.12",
      "bankStatementDate": "2020/12/31"
    }
]

我有一个基本的实现,Array.filter 可以做到,但随着更多银行的添加,它无法扩展,并且每个新银行都需要更改代码,能够将每个银行过滤成的理想方法是什么它自己独特的对象数组?

const chaseBank = bankData.filter(el => el.bank === "Chase")
const goldManBank = bankData.filter(el => el.bank === "Goldman Sachs")
const wellsFargoBank = bankData.filter(el => el.bank === "Wells Fargo")

【问题讨论】:

    标签: javascript arrays typescript filtering


    【解决方案1】:

    你可以拿一个对象进行分组。

    const
        data = [{ bank: "Chase", monthEndBalance: "72,175.88", bankStatementDate: "2020/10/31" }, { bank: "Chase", monthEndBalance: "93,412.79", bankStatementDate: "2020/07/31" }, { bank: "Chase", monthEndBalance: "88,175.88", bankStatementDate: "2020/11/30" }, { bank: "Chase", monthEndBalance: "102,200.12", bankStatementDate: "2020/12/31" }, { bank: "Goldman Sachs", monthEndBalance: "72,276.12", bankStatementDate: "2020/11/30" }, { bank: "Goldman Sachs", monthEndBalance: "52,276.12", bankStatementDate: "2020/10/31" }, { bank: "Goldman Sachs", monthEndBalance: "102,276.12", bankStatementDate: "2020/12/31" }, { bank: "Wells Fargo", monthEndBalance: "33,276.12", bankStatementDate: "2020/11/30" }, { bank: "Wells Fargo", monthEndBalance: "12,276.12", bankStatementDate: "2020/10/31" }, { bank: "Wells Fargo", monthEndBalance: "150,276.12", bankStatementDate: "2020/12/31" }],
        result = data.reduce((r, o) => {
            (r[o.bank] ??= []).push(o);
            return r;
        }, {});
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2018-05-25
      • 2018-12-25
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2021-04-15
      • 2017-03-19
      相关资源
      最近更新 更多