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

299
Vistas
Matriz para listar en Javascript

 function arrayToList(array) {
 let list = null;
 for (let i = array.length - 1; i >= 0; i--) {
 list = {value: array[i], rest: list};
 }
 return list;
}

// output
console.log(arrayToList([10, 20, 30, 40, 50]));
// → {value: 10, rest: {value: 20, rest: null}}

desde array.value = array[i] y en el bucle, la condición se establece para comenzar desde array.length -1 que es el último índice de la matriz, así que estaba pensando por qué la salida no está invertida. Según tengo entendido, la lista debe comenzar en 50 y decrecer desde allí hasta llegar a 10 .
¿Alguien puede ayudar por qué la condición del ciclo se establece de esta manera y no (i = 0; i < array.length -1; i++) . Gracias.

almost 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La primera vez alrededor del bucle crea un objeto:

 {
 "value": 50,
 "rest": null
}

La segunda vez alrededor del ciclo, lo coloca dentro del nuevo objeto que crea.

Y así.

Por lo tanto, "value": 50 es el valor más interno .

almost 4 years ago · Santiago Trujillo Denunciar

0

Lo que hace su fragmento de código es para cada valor en su matriz, lo tomará y cambiará la list para ser

 list = {value: *, rest: null}

Luego repite el proceso otra vez, pero luego llega a la misma instrucción. En su código, el rest del valor está configurado para ser una list dentro de sí mismo. Entonces toma el siguiente valor y cambia rest dentro de la list para ser

 {value: *, rest: null}

Así que el valor de list se convierte en:

 list = {value: *, rest: {value: *, rest: null}

La solución es usar una matriz separada:

 const ArrayToList = (Array) => {
 List = {Value: null, Rest: RestArray};
 RestArray = [];
 
 // Set the first value:
 List.Value = Array[0]
 
 // Loop through the rest:
 for (let i = 1; i < (Array.length - 1); i++) {
 RestArray[i] = Array[i]
 }

 return List
}
almost 4 years ago · Santiago Trujillo Denunciar

0

puede hacer esto siguiendo el orden "natural" de su matriz, es solo una cuestión de concisión

 function arrayToList(arr) 
 {
 let list = null, listTop = null;

 for (let value of arr) 
 {
 if (list===null) 
 {
 list = { value, rest:null }
 listTop = list
 }
 else
 {
 list.rest = { value, rest:null }
 list = list.rest
 }
 }
 return listTop;
 }

// output
console.log( arrayToList([10, 20, 30, 40, 50]) )

almost 4 years ago · Santiago Trujillo 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