Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

495
Visualizações
Eloquent JavaScript Capítulo 4: Ejercicio - Una lista

Tengo problemas para convertir una lista de objetos en una matriz. En la segunda función listToArray, estoy tratando de recorrer las propiedades y verificar si el valor es un número o no. En el caso de un número, simplemente lo empujo a la matriz vacía, pero si no es así, estoy probando la recursividad con una propiedad como argumento. Obtengo una matriz vacía, ayúdenme por favor. NOTA: No hay soluciones de fuerza bruta, por favor. Como, list.value y list.rest. ¡Gracias!

 function arrayToList(array) { let list = null; for (let i = array.length - 1; i >= 0; i--) { list = {value: array[i], rest: list}; } return list; } function listToArray(list) { let array = []; for (let i in list) { if(typeof list[i] == "number") { array.push(list[i]); } else if(typeof list[i] != "number") { return listToArray(list[i]); } } return array; } console.log(arrayToList([10, 20])); Result: {value: 10, rest: {value: 20, rest: null}} console.log(listToArray(arrayToList([10, 20, 30]))); Result: []

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Cuando tu lo hagas

 return listToArray(list[i]);

está ignorando el valor de la iteración actual y solo está devolviendo el valor en la estructura anidada. También está iterando sobre todas las propiedades innecesariamente (y regresando antes de pasar a la segunda) en lugar de hacer referencia a las 2 propiedades exactas que existirán.

Extraiga la propiedad de value , extraiga el valor recursivo si existe y devuelva una matriz de esos dos juntos.

Si el argumento puede no ser un objeto, verifíquelo también antes de extraer valores de él.

 function arrayToList(array) { let list = null; for (let i = array.length - 1; i >= 0; i--) { list = {value: array[i], rest: list}; } return list; } function listToArray(list) { if (!list) return []; const { value, rest } = list; if (!rest) return [value]; return [value, ...listToArray(rest)]; } console.log(listToArray(arrayToList([10, 20, 30])));

o, con un argumento recursivo predeterminado en lugar de propagación:

 function arrayToList(array) { let list = null; for (let i = array.length - 1; i >= 0; i--) { list = {value: array[i], rest: list}; } return list; } function listToArray(list, array = []) { if (!list) return array; array.push(list.value); return listToArray(list.rest, array); } console.log(listToArray(arrayToList([10, 20, 30])));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda