【发布时间】:2019-03-27 13:27:20
【问题描述】:
我想使用 Lodash 链函数过滤数组嵌套的数组项,然后返回完整的父对象。
以下是我的用例中的一些虚拟数据来说明我的问题:
const capital = [
{
"financeCategory": "Loans",
"financeCategoryId": "22HM6fFFwx9eK2P42Onc",
"financeElements": [
{
"financeCategoryId": "22HM6fFFwx9eK2P42Onc",
"financeElementId": "JQiqqvGEugVQuI0fN1xQ",
"financeElementTitle": "Convertible loan",
"data": [
{
"month": 1,
"value": 100,
"year": "2020"
},
{
"month": 1,
"value": 100,
"year": "2019"
},
],
}
]
},
{
"financeCategory": "Investments",
"financeCategoryId": "JtnUsk5M4oklIFk6cAlL",
"financeElements": []
},
{
"financeCategory": "Ownerships Contribution",
"financeCategoryId": "PaDhGBm5uF0PhKJ1l6WX",
"financeElements": []
}
];
我想过滤 FinanceElements 中的“数据”数组,然后返回完整的费用对象,并将过滤器应用于“数据”。
假设我想操作费用对象,并且只获取具有 2020 年的财务元素的数据。我尝试过这样:
const expenseFiltered: any = _.chain(expenses)
.flatMap('financeElements')
.flatMap('data')
.filter({year: '2020' as any}).value();
但这只是给了我过滤后的“数据”对象。 输出:
[{
"month": 1,
"value": 100,
"year": "2020"
}]
现在我知道有一些方法可以使用它来生成包含过滤数据的完整对象,但我真的很想用一个简单的 _.chain 命令来完成此操作
期望的输出
[
{
"financeCategory": "Loans",
"financeCategoryId": "22HM6fFFwx9eK2P42Onc",
"financeElements": [
{
"financeCategoryId": "22HM6fFFwx9eK2P42Onc",
"financeElementId": "JQiqqvGEugVQuI0fN1xQ",
"financeElementTitle": "Convertible loan",
"data": [
{
"month": 1,
"value": 100,
"year": "2020"
}
],
}
]
},
{
"financeCategory": "Investments",
"financeCategoryId": "JtnUsk5M4oklIFk6cAlL",
"financeElements": []
},
{
"financeCategory": "Ownerships Contribution",
"financeCategoryId": "PaDhGBm5uF0PhKJ1l6WX",
"financeElements": []
}
]
这可以使用 lodash 链吗?
【问题讨论】:
标签: javascript typescript lodash