Tengo un objeto de filtros que se ve así:
var filterUpdate = { assetClass: [{id: 1, name: 'photo'}, {id: 2, name: 'thumbnail'} ] vehicleType: [{id: 1, name: 'nissan'}] }Tengo datos de estado como este (las claves que representan años son dinámicas y pueden cambiar):
this.state.filteredOwnership = { 2020: [], 2021: [{assetClass: 'thumbnail', vehicleType: 'Toyota' }, {assetClass: 'Abs', vehicleType: 'Prius' }] 2022: [{assetClass: 'thumbnail', vehicleType: 'Toyota' }, {assetClass: 'photo', vehicleType: 'Prius' }, {assetClass: 'Abs', vehicleType: 'nissan'}, {assetClass: 'LMO', vehicleType: 'Tesla'} ] }Esta es la cadena de lodash actual:
const filterData = _filter(filteredOwnership, (dataitem)=> { if(_isEmpty(filterUpdate.assetClass) && _isEmpty(filterUpdate.vehicleType)) { return dataitem } if(_some(_map(filterUpdate.assetClass, 'name'), dataitem.assetClass) || _some(_map(filterUpdate.vehicleType, 'name'), dataitem.vehicleType)){ return dataitem } });Queremos devolver una matriz filtrada que se vería así:
filterData = { 2020: [], 2021: [{assetClass: 'thumbnail', vehicleType: 'Toyota' }] 2022: [{assetClass: 'thumbnail', vehicleType: 'Toyota' }, {assetClass: 'photo', vehicleType: 'Prius' }, {assetClass: 'Abs', vehicleType: 'nissan' } ] } El problema que tengo es que dataitem.assetClass y dataitem.vehicleType son la matriz de objetos dentro de las claves del año. No sé dónde usar _map en el elemento de datos que me ayudaría a devolver un elemento en esa matriz para filtrarlo
¡También estoy abierto a sugerencias que no sean lodash! ¡Las formas js regulares de hacerlo también serían apreciadas!