Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

78
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!