Tengo esta matriz:
defaultColumnsWithItems = [ { column: 'Contrie', items: [ { id: 1, label: 'USA', selectedItem: true }, { id: 2, label: 'FRANCE', selectedItem: false }, { id: 2, label: 'MAROC', selectedItem: false } ] }, { column: 'Categorie', items: [ { id: 0, label: 'Alimentaion', selectedItem: true }, { id: 1, label: 'ricolage', selectedItem: false }, { id: 2, label: 'Literie', selectedItem: true }, { id: 3, label: 'Menage', selectedItem: false }, ] }];
Quiero filtrar solo los elementos con el elemento seleccionado con un valor igual a verdadero. Intento esto:
const columnsWithSelectedItems = colmunsWithItemsToFilter.filter((columnWithItems) => { return columnWithItems.items.filter( item => item.selectedItem === true) })pero devuelve todos los elementos.
Gracias.
En lugar de filtrar las columnas predeterminadas con elementos, debe devolver el objeto completo con la condición para la matriz de elementos.
En este escenario, usamos la función de mapa para devolver nuestro objeto y para la matriz de elementos, usamos la función de filtro para filtrar el elemento seleccionado en cada elemento.
const defaultColumnsWithItems = [ { column: 'Contrie', items: [ { id: 1, label: 'USA', selectedItem: true }, { id: 2, label: 'FRANCE', selectedItem: false }, { id: 2, label: 'MAROC', selectedItem: false } ] }, { column: 'Categorie', items: [ { id: 0, label: 'Alimentaion', selectedItem: true }, { id: 1, label: 'ricolage', selectedItem: false }, { id: 2, label: 'Literie', selectedItem: true }, { id: 3, label: 'Menage', selectedItem: false }, ] } ] const items = defaultColumnsWithItems.map(el => { return { column: el.column, items: el.items.filter(i => i.selectedItem) } }) console.log('items: ', items);Prueba esto
defaultColumnsWithItems.map(function(ComparisonResult) { ComparisonResult.items = ComparisonResult.items.filter(x => x.selectedItem); return ComparisonResult; });