Estoy trabajando en un proyecto de JavaScript donde, en este caso, estoy tratando de obtener las dos matrices con el mayor valor en la posición 2.
[-20.172, 35.251, 0], [-16.368, 21.792, 26.81], [-29.311, 18.393, 0], [14.54, 15.23, 0], [-1.61, 12.91, 27.692], [0, 0, 0]la respuesta prevista debería ser así:
[-16.368, 21.792, 26.81], [-1.61, 12.91, 27.692]No puedo ordenar por los que tienen un cero y los que no lo tienen, algunos otros casos en el proyecto en el que estoy trabajando posiblemente podrían tener números diferentes en la posición 2.
¿alguna sugerencia?
No puedo ordenar por los que tienen un cero
¿Podría ser que la matriz se declare const ?
var topTwo = function ( array_of_arrays ) { return array_of_arrays.sort((a, b) => b[2] - a[2]) .slice(0, 2) ; }; var arr = [ [-20.172, 35.251, 7], [-16.368, 21.792, 26.81], [-29.311, 18.393, 0], [14.54, 15.23, 0], [-1.61, 12.91, 27.692], [0, 0, -3] ]; console.log( topTwo(arr) );Usando Array#reduce :
const arr = [ [-20.172, 35.251, 0], [-16.368, 21.792, 26.81], [-29.311, 18.393, 0], [14.54, 15.23, 0], [-1.61, 12.91, 27.692], [0, 0, 0] ]; const [max1Index, max2Index] = arr.reduce(([max1Index, max2Index], { 2: num }, index) => { const max1 = arr[max1Index][2], max2 = arr[max2Index][2]; return num > max1 ? [index, max1Index] : num > max2 ? [max1Index, index] : [max1Index, max2Index]; }, [0, 0]); console.log(arr[max1Index], arr[max2Index]);