es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Al usar reduce con una operación ternaria dentro de un map, parece que tengo dificultades.

Este es para devolver un array de números que son el valor más alto de los arrays dentro del array base. Puedo hacer que funcione cuando uso bucles for. Pero he intentado simplificarlo y no puedo entender por qué no funciona. Cualquier ayuda sería apreciada.

function largestOfFour(arr) {
  return arr.map((x) => x.reduce((a, c) =>  c > a ? c : a, 0));
}

Ejemplo con entrada y salida:

const input = [
  [1,2,3,4,5],
  [6,5,4,3,2,1],
  [1,7,3,4,5,6]
];

function findHighestElements(arr) {
    return arr.map((x) => x.reduce((a, c) =>  c > a ? c : a, 0));
}

console.log(findHighestElements(input)); // [5,6,7]
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La función largestOfFour debe tomar una matriz de matrices como entrada y devolver una matriz de los valores más altos en cada sub-matriz. El código utiliza el método map para recorrer cada sub-matriz y aplica el método reduce para encontrar el valor máximo.

    Sin embargo, la función de flecha dentro de reduce no es correcta. El operador de comparación > debe invertirse a <, ya que queremos encontrar el valor máximo. Además, el valor inicial para el reductor debería ser Number.NEGATIVE_INFINITY en lugar de 0, para asegurarnos de que se consideren todos los valores en el cálculo.

    Aquí está el código corregido:

    function largestOfFour(arr) {
      return arr.map(x => x.reduce((max, value) => value < max ? value : max, Number.NEGATIVE_INFINITY));
    }
    

    Con esta corrección, el código ahora debería funcionar como se espera, devolviendo una matriz de los valores más altos en cada sub-matriz.

Comments are closed.