У меня следующая структура JSON:
{
"id": 123,
"shops": [
{
"shopId": 456,
"products": [
{
"productId": 10001,
"name": "abc",
"state": "active"
},
{
"productId": 10002,
"name": "def",
"state": "expired"
}
]
},
{
"shopId": 789,
"products": [
{
"productId": 20001,
"name": "qrt",
"state": "expired"
},
{
"productId": 20002,
"name": "jbf",
"state": "active"
}
]
}
]
}
Я хочу удалить все товары из каждого магазина, в котором товар не обладает определенными свойствами.
Если я скрываю его в плоская карта, тогда я могу сделать это нормально, но тогда я теряю внешний объект, так как у меня просто есть массив со всеми продуктами, которые не были удалены.
_(shopJson.shops).map('products').flatten().map(x => {if(x.state === 'active'){return x}}).compact().value()
Я попробовал следующее, но просто в итоге получается пустой массив:
_(shopJson.shops).map('products').filter(x => x.state === 'active').value()
Я также пытался использовать _.reduce()
и _.transform()
, но не могу заставить его работать
Финальный JSON должен выглядеть следующим образом:
{
"id": 123,
"shops": [
{
"shopId": 456,
"products": [
{
"productId": 10001,
"name": "abc",
"state": "active"
}
]
},
{
"shopId": 789,
"products": [
{
"productId": 20002,
"name": "jbf",
"state": "active"
}
]
}
]
}