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

86
Vistas
JavaScript For Loop no devuelve la cadena esperada

Estoy tratando de colocar los nombres de los productos comprados en un píxel publicitario para generar informes. Un ejemplo está en la siguiente imagen:

ingrese la descripción de la imagen aquí

Estoy tratando de usar la siguiente función para recorrer el objeto y devolver solo los nombres, separados por comas, como una cadena dentro de una sola variable. Estoy usando el siguiente script:

 function products() { var items = _rsq.executor.sentWave.order_properties.order_items; var product = ""; for (var i=0; i < items.length; i++) { product += product + _rsq.executor.sentWave.order_properties.order_items[i].name + ","; i++; } console.log(product); } products();

pero solo está registrando el primer producto así: Purity Organic CBD Sleep Tea - Chamomille 15mg 18 Count,

Cualquier ayuda en lo que me estoy perdiendo sería muy apreciada. ¡Gracias!

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

0

Si solo desea que su código funcione, simplemente elimine el i++ adicional y cambie ligeramente la línea += , así:

 function products() { var items = _rsq.executor.sentWave.order_properties.order_items; var product = ''; for (var i = 0; i < items.length; i++) { product += _rsq.executor.sentWave.order_properties.order_items[i].name + ','; } console.log(product); } products();

Sin embargo, sugeriría usar una de estas tres alternativas a los bucles for. Si usa métodos como estos, evitará por completo el problema de escribir accidentalmente i++ dos veces, y su código será más legible en general.

 const items = [ { id: 0, name: 'Sleep', price: 24.99, }, { id: 1, name: 'Revive', price: 24.99, }, ]; const productsUsingReduce = () => { return items.slice(1).reduce((result, item) => { return `${result}, ${item.name}`; }, items[0].name); }; const productsUsingFor = () => { let result = items[0].name; items.slice(1).forEach((item) => { result += `, ${item.name}`; }); return result; }; const productsUsingJoin = () => { return items .map((item) => { return item.name; }) .join(', '); }; console.log(productsUsingReduce()); console.log(productsUsingFor()); console.log(productsUsingJoin());

La única* razón por la que he encontrado que realmente necesita un bucle for es si está usando await para ejecutar varias llamadas asincrónicas en un orden específico.

* Si se ve obligado a usar versiones antiguas de javascript/node por alguna extraña razón, es posible que termine teniendo que usar bucles for.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Cuando haces x += 2 , es lo mismo que si hicieras x = x + 2 , por lo que el segundo product en product += product debe eliminarse para obtener el resultado correcto.

Puede acortar _rsq.executor.sentWave.order_properties.order_items a solo items , porque lo declaró antes del ciclo for como items y nunca lo cambió.

Además, agregó extra i++ , que no es necesario, porque ya incrementó i en el ciclo for, específicamente al final de esta línea: for (var i=0; i < items.length; i++) .

Esto debería funcionar:

 function products() { var items = _rsq.executor.sentWave.order_properties.order_items; var product = ""; for (var i=0; i < items.length; i++) { product += items[i].name + ","; } console.log(product); } products();
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