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.
Su código inicial parece demasiado complicado para sus requisitos.
Obtener una matriz de valores seleccionados.
Obtenga el max de esos valores.
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));