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

173
Vistas
La función recursiva en una matriz ordenada devuelve indefinido

Estoy intentando resolver este problema de forma recursiva: Clean the room function: given an input of [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20], make a function that organizes these into individual array that is ordered. For example answer(ArrayFromAbove) should return: [[1,1,1,1],[2,2,2], 4,5,10,[20,20], 391, 392,591]

 Array: const array1 = [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20]; array1.sort((a,b) => ab);

Función principal:

 const sortArray = (mainArr) => { let acc = []; console.log(acc, "acc"); const recursive = (arr) => { if (arr.length > 1) { console.log("inside func2 ", acc); let likeArr = singArr(arr, arr[0]); console.log(likeArr, "like"); arr = deleteVal(arr, arr[0]); acc.push(likeArr); return recursive(mainArr); } else { return acc; } } };

Funciones auxiliares:

 const singArr = (arr1, val) => { let returnVal = arr1.filter(num => num === val); return (returnVal.length === 1 ? returnVal[0] : returnVal); }; const deleteVal = (arr, val) => { let returnVal = arr.filter(num => num !== val); return returnVal };

La idea es revisar la matriz que he ordenado, filtrar usando el primer elemento de la matriz para obtener una nueva matriz (valor único si solo hay uno) con los elementos similares, empujarlo a mi acumulador y luego eliminar cada instancia de él en la matriz original.

Estoy tratando de hacer esto de forma recursiva hasta que no queden elementos en la matriz original, pero vuelve indefinido.

¿Alguna idea de dónde me estoy equivocando?

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

0

dentro de su función recursiva está haciendo return recursive(mainArr); en su lugar, intente devolver recursive(arr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Nunca llamas a la función recursive .

 const sortArray = (mainArr) => { let acc = []; console.log(acc, "acc"); const recursive = (arr) => { if (arr.length > 1) { console.log("inside func2 ", acc); let likeArr = singArr(arr, arr[0]); console.log(likeArr, "like"); arr = deleteVal(arr, arr[0]); acc.push(likeArr); return recursive(mainArr); } else { return acc; } } recursive(mainArr) //<--- Call it! };

También notará que sortArray no devuelve nada, por lo que es posible que desee cambiar recursive(mainArr) para return recursive(mainArr) para obtener un retorno.

Cabe destacar que el código no produce el resultado deseado, pero esta solución debería ayudarlo a comenzar.

about 4 years ago · Juan Pablo Isaza Denunciar

0

No estás llamando a la función recursive desde fuera de la función.

 const sortArray = (mainArr) => { let acc = []; console.log(acc, "acc"); const recursive = (arr) => { if (arr.length > 1) { console.log("inside func2 ", acc); let likeArr = singArr(arr, arr[0]); console.log(likeArr, "like"); arr = deleteVal(arr, arr[0]); acc.push(likeArr); return recursive(mainArr); } else { return acc; } } return recursive(mainArr) };

Además, creo que el código publicado no devuelve el resultado deseado. Probablemente puedas hacer lo siguiente:

 const array1 = [1,2,4,591,392,391,2,5,10,2,1,1,1,20,20]; array1.sort((a,b) => ab); const map = new Map(); array1.forEach((item) => { if(map.has(item)) { const storedItem = map.get(item); map.set(item, Array.isArray(storedItem) ? [...storedItem, item] : [storedItem, item]) } else { map.set(item, item); } }); console.log(Array.from(map.values()))

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