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

101
Vistas
Why massToMove is undefined

Hello I want to return massToMove from my algorithm. But I get undefined, when I console.log() inside the loop I got the proper number. Why it is undefined and how can I prevent that? It is quiet weird because variable is defined '0' and changed inside the loop.

let numberOfElephants = 6;
let massOfElephants = [2400, 2000, 1200, 2400, 1600, 4000];
let startOrder = [1, 4, 5, 3, 6, 2];
let endOrder = [5, 3, 2, 4, 6, 1];

const sortElephants = (
  numberOfElephants,
  massOfElephants,
  elephantsOrder,
  proposedOrder
) => {
  const elephantObject = [];
  elephantsOrder.forEach((order, i) => {
    elephantObject.push({ [order]: massOfElephants[i] });
  });
  let massToMove = 0;

  for (let i = 0; i < numberOfElephants; i++) {
    for (let j = 0; j < numberOfElephants; j++) {
      if (startOrder[i] === proposedOrder[j]) {
        if (
          startOrder.indexOf(startOrder[i]) ===
          endOrder.indexOf(proposedOrder[j])
        )
          return;
        const indexOfCorrect = proposedOrder.findIndex(
          (num) => num === endOrder[j]
        );
        const itemAtGivenOrder = startOrder[indexOfCorrect];

        let isCorrect =
          endOrder.indexOf(itemAtGivenOrder) ===
          startOrder.indexOf(itemAtGivenOrder);

        let temp;
        temp = startOrder[indexOfCorrect];

        startOrder[indexOfCorrect] = startOrder[i];

        startOrder[i] = temp;

        const elephantAtGivenCorrectIndex = elephantObject.find(
          (elephant) => elephant[itemAtGivenOrder.toString()]
        );

        const startingElephant = elephantObject.find(
          (elephant) => elephant[startOrder[i]]
        );

        if (!isCorrect) {
          massToMove += startingElephant[startOrder[i]];
        } else {
          massToMove +=
            elephantAtGivenCorrectIndex[itemAtGivenOrder] +
            startingElephant[startOrder[i]];
        }
      }
    }
  }
  return massToMove;
};

console.log(sortElephants(numberOfElephants, massOfElephants, startOrder, endOrder));

about 4 years ago · Juan Pablo Isaza
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