Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

115
Vistas
Objeto de matriz 2D a función de filtro de matriz 1D

Caso de uso 1
Suponiendo que tengo 2dArray Object de

 let arr = [{'getName':'Report1'},{'getName':'User'},{'getName':'report 2'},{'getName':'User'},{'getName':'User'}] let _NotRequiredSheet = ['User','Report 254',...]

Estoy tratando de optimizar mi script con programación funcional que me devolverá una serie de

 ['report1','report2']

El método actual que estoy usando y que no tiene ningún error es:

 for(let i =0;i < arr.length;i++){ if(arr[i].getName != _NotRequiredSheet[0]){ console.log(arr[i].getName) } }

Pero esto tendrá un impacto si _notrequiredSheet tiene una gran lista de lo que no se requiere

Intenté usar este enfoque que usa filtro, pero dado que es 2dObject Array, no estoy seguro de cómo debería implementarse. Lo que hice en mi poc es

 //Approach 1 : Not Working let result = arr.filter(function (arr) { return arr.getName != _NotRequiredSheet.values(); }) //Output should be as 1dArray['report1','report2'] , not (5) [{…}, {…}, {…}, {…}, {…}] console.log(result) //Approach 2 : Will output as 2D array with filtered value // Will require to hardcord the index which is not advisable let result = arr.filter(function (arr) { return arr.getName != _NotRequiredSheet[0]; }) console.log(result)

Quería verificar si hay alguna forma en que pueda pasar el uso de for loop con la función de filtro. El resultado debería devolverse como una matriz 1D que es

['Informe1','Informe2']

El caso de uso 1 está resuelto

Caso de uso 2: matriz de objetos 2D Suponiendo que los datos se declaran como

 let arr2 = [ {$0:{'Name':'Report1'}}, {$0:{'Name':'Report2'}}, {$0:{'Name':'User'}} ]

El resultado debería mostrar esto en console.log (2) [{…}, {…}] , la función de filtro eliminará 'Usuario' como se refleja en _NotRequiredSheet.

Usando la sintaxis que escribí

 let result = arr2.map(item => item.$0.Name).filter(Name => !_NotRequiredSheet.includes(Name))

Esto devolverá como una sola matriz

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede filtrar sus datos buscando valores no deseados y mapear solo la propiedad deseada.

 const data = [{ getName: 'Report1' }, { getName: 'User' }, { getName: 'report 2' }, { getName: 'User' }, { getName: 'User' }], _NotRequiredSheet = ['User', 'Report 254'], result = data .filter(({ getName }) => !_NotRequiredSheet.includes(getName)) .map(({ getName }) => getName); console.log(result);

con un conjunto

 const data = [{ getName: 'Report1' }, { getName: 'User' }, { getName: 'report 2' }, { getName: 'User' }, { getName: 'User' }], _NotRequiredSheet = ['User', 'Report 254'], take = k => o => o[k], hasNot = s => v => !s.has(v), comp = f => g => o => f(g(o)), result = data .filter( comp(hasNot(new Set(_NotRequiredSheet)))(take('getName')) ) .map(({ getName }) => getName); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Recomiendo usar reduce() para que pueda devolver algo basado en _NotRequiredSheet.includes(cur.getName)

 let arr = [{'getName':'Report1'},{'getName':'User'},{'getName':'report 2'},{'getName':'User'},{'getName':'User'}] let _NotRequiredSheet = ['User','Report 254' ]; let res = arr.reduce((prev, cur) => { if (_NotRequiredSheet.includes(cur.getName)) { return prev; } else { return [ ...prev, cur.getName ]; } }, []); console.log(res);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda