JavaScript For Loop无法返回预期的逗号分隔商品名称字符串问题
问题原因
- 循环下标重复递增:
for循环头部已经配置了i++的递增逻辑,你又在循环体内部额外写了一次i++,导致每次循环下标实际增加2,只会取下标为0、2、4的元素,自然无法遍历到所有商品。 - 字符串拼接逻辑错误:
product += product + 商品名称 + ","的写法等价于product = product + product + 商品名称 + ",",会导致已拼接的内容重复叠加,属于逻辑错误。 - 额外小问题:当前写法最后拼接出来的字符串末尾会多一个多余的逗号,后续使用需要额外处理。
修正后的代码
function products() { var items = _rsq.executor.sentWave.order_properties.order_items; var product = ""; // 去掉循环体内部的i++,拼接逻辑去掉重复的product for (var i=0; i < items.length; i++) { product += items[i].name + ","; } // 去掉末尾多余的逗号 product = product.slice(0, -1); console.log(product); } products();
更简洁的优化写法
可以直接用数组的map+join方法实现,不需要手动写循环,也不会产生末尾多余逗号:
function products() { const items = _rsq.executor.sentWave.order_properties.order_items; const product = items.map(item => item.name).join(','); console.log(product); } products();
内容的提问来源于stack exchange,提问作者Andrew Ransom
相关产品推荐
相关产品推荐

