javascript - 根据属性将对象数组过滤为多个对象数组
问题描述
目前,我有一个对象数组
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")
解决方案
你可以拿一个对象进行分组。
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; }
推荐阅读
- python - 如何使用 Python 获取 Excel 文件中形状的单元格坐标?
- google-api - 需要说明如何应用 Google Sheets API 限制
- charts - 自 1 天以来,Google 图表在 Load 上抛出错误
- python - 应用 dbscan 后如何提取点云?
- python - 如何将特定工作表的excel保存到另一个excel工作表python中
- javascript - 在 ajax 表、jsp 和 servlet 中显示数据
- sql-server - 想要突出显示组中的每一行
- django - Django ORM:如何计算具有相同属性的对象?
- java - 如何将 Maven 添加到路径变量 windows 10?
- c - 如何用空格交换矩阵中的特定字符