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

67
Vistas
Atascado entre Seleccionado con .JS .filters/.map

Entonces obtuve este segmento de código, cada vez que alguien tiene la selección más alta, debe eliminarse de la consulta, como puede ver en el fragmento, funciona normalmente, 4 se captura y elimina como se supone.

 const result_arr = [ {selected: 3, absent: 0}, {selected: 4, absent: 0}, {selected: 2, absent: 0}, ] const max = Math.max( ...result_arr.filter(item => !item.absent).map(item => item.selected) ); console.log(max); let newArr = result_arr.filter(item => item.selected != max).filter(item => !item.absent); console.log(newArr);

Me encuentro con un problema que se ve en el fragmento a continuación. Cada vez que uno de los seleccionados alcanza números iguales, lo que definitivamente ocurrirá, devuelve una matriz vacía.

 const result_arr = [ {selected: 4, absent: 0}, {selected: 4, absent: 0}, {selected: 4, absent: 0}, ] const max = Math.max( ...result_arr.filter(item => !item.absent).map(item => item.selected) ); console.log(max); let newArr = result_arr.filter(item => item.selected != max).filter(item => !item.absent); console.log(newArr);

En cambio, lo que quiero es que se devuelvan y usen los 3, como se ve en el fragmento a continuación.

 const result_arr = [ {selected: 4, absent: 0}, {selected: 4, absent: 0}, {selected: 4, absent: 0}, ] const max = Math.max( ...result_arr.filter(item => !item.absent).map(item => item.selected) ); console.log(max); let newArr = result_arr.filter(item => item.selected == max).filter(item => !item.absent); console.log(newArr);

Cambié != a ==, así que desconfío de cómo hacer esto, pero ¿cómo compilo esto en uno? ¿Funcionará un If else? Ya probé uno.

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

0

Su código inicial parece demasiado complicado para sus requisitos.

  1. Obtener una matriz de valores seleccionados.

  2. Obtenga el max de esos valores.

  3. Si every valor en la matriz seleccionada es max , devuelve la matriz completa; de lo contrario, devuelve la matriz filtrada.

 const arr=[{selected:3,absent:0},{selected:4,absent:0},{selected:2,absent:0}]; const arr2=[{selected:4,absent:0},{selected:4,absent:0},{selected:4,absent:0}]; const arr3=[{selected:4,absent:0},{selected:2,absent:0},{selected:4,absent:0}]; function check(arr) { const selected = arr.map(obj => obj.selected); const max = Math.max(...selected); if (selected.every(el => el === max)) { return arr; } return arr.filter(item => item.selected !== max) } console.log(check(arr)); console.log(check(arr2)); console.log(check(arr3));

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