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

85
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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