Estoy tratando de eliminar las cadenas vacías en mi matriz.
Esta es mi matriz:
let array = [{name:'John',age:'18',address:''},{name:'George',age:'',address:''},{name:'Kevin',age:'25',address:''}]Me gustaría eliminar los valores de cadena vacíos SOLAMENTE si está vacío en todos los objetos.
resultado deseado:
[{name:'John',age:'18'},{name:'George',age:''},{name:'Kevin',age:'25'}]Esto es lo que hice, pero elimina TODOS los valores de cadena vacíos:
for (let i = 0; i < array.length; i++) { array[i] = Object.fromEntries(Object.entries(array[i]).filter(([_, v]) => v != '')); }Gracias por adelantado ,
Si no le importa mutar el objeto array original. Aquí hay una solución que utiliza algunas funciones de matriz.
let array = [ { name: 'John', age: '18', address: '' }, { name: 'George', age: '', address: '' }, { name: 'Kevin', age: '25', address: '' } ] Object.keys(array[0]) .filter(k => array.every(obj => !obj[k])) .forEach(k => array.forEach(obj => delete obj[k])); console.log(array);Puedes resolver este problema con un método de filtro.
let array = [{name:'John',age:'18',address:''},{name:'George',age:'',address:''},{name:'Kevin',age:'25',address:''}] const entries = Object.keys(array[0]) entries.forEach(e => { if(array.filter(i => i[e]).length === 0) { array = array.map(i => {delete i[e]; return i}) } }) console.log(array)Si no desea mutar la matriz original:
let array = [{name:'John',age:'18',address:''},{name:'George',age:'',address:''},{name:'Kevin',age:'25',address:''}] let result; Object.keys(array[0]) .forEach(key => { if(array.every(e => e[key] === '')) result = array.map(({[key]:_,...rest}) => ({...rest})) }) console.log(result)