Я хочу использовать цепную функцию 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": []
}
];
Я хочу отфильтровать массив «data» в пределах financeElements, а затем вернуть полный объект расходов с фильтром, примененным к «data».
Допустим, я хочу манипулировать объектом расходов и толькополучить данные об элементах 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": []
}
]
Возможно ли это с помощью цепочки Лодаша?