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

291
Vistas
Eliminar matrices de una matriz si existen ciertos valores dentro de una lista

Bastante nuevo en JavaScript, solo intento eliminar una matriz completa dentro de mis datos si ciertos valores se enumeran en la matriz del_values .

¿Cuál sería el mejor enfoque para este problema?

 data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']] var del_values = ['J-001','K-001']; function remove_from_list(list,deleted_values) { for( var i = 0; i < deleted_values.length; i++) { result = list.filter(dat => !dat.includes(deleted_values[i])); } return result; }

Resultado actual

 data = [ [ 'true', 'visiting-today', 'DVM-Wiessman', 'J-001' ], [ 'true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001' ], [ 'false', 'visiting-tommorrow', 'DVM-Kon', 'J-001' ] ]

Resultado deseado: para eliminar una matriz completa dentro de los datos si contiene alguno de los valores enumerados en del_values

 data = [[ 'true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001' ] ]
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede usar Array.prototype.every dentro de la devolución de llamada del filtro:

 const data = [ ['true', 'visiting-today', 'DVM-Wiessman', 'J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens', 'K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens', 'Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon', 'J-001'] ] const del_values = ['J-001', 'K-001']; function remove_from_list(list, deleted_values) { return list.filter(arr => arr.every(el => !deleted_values.includes(el))) } console.log(remove_from_list(data, del_values))


 function remove_from_list(list,deleted_values) { for( var i = 0; i < deleted_values.length; i++) { result = list.filter(dat => !dat.includes(deleted_value[i])); } return result; }

El problema principal en su código es que cada list de iteraciones se filtra, por lo que la matriz previamente filtrada se reasigna.

over 4 years ago · Santiago Trujillo Denunciar

0

Usando Array.some() y Array.filter()

 var data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']] var del_values = ['J-001','K-001']; var result = data.filter(function(arr){ return !arr.some(function(e){return del_values.includes(e)}); }) console.log(result)

over 4 years ago · Santiago Trujillo Denunciar

0

Está ejecutando su filtro a través de la list en lugar del result cada vez.

Creo que tenía la intención de continuar trabajando en la lista filtrada en lugar del argumento nuevamente con cada iteración:

 data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']] var del_values = ['J-001','K-001']; function remove_from_list(list,deleted_values) { for( var i = 0; i < deleted_values.length; i++) { list = list.filter(dat => !dat.includes(deleted_values[i])); } return list; } let e = remove_from_list(data,del_values); console.log(e);

over 4 years ago · Santiago Trujillo 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