如何用for循环+push()生成指定格式的customsItem数组?排查无输出问题
问题:批量转换购物车商品为指定报关项格式
需求背景
我需要将项目中的购物车商品数组itemInCart,转换为指定格式的customsItem数组(原格式是单个对象,现在要改成包含多个对象的数组)。
指定的单个报关项格式
var customsItem = { "description":"T-Shirt", "quantity":20, "net_weight":"1", "mass_unit":"lb", "value_amount":"200", "value_currency":"USD", "origin_country":"US" };
现有购物车商品数组itemInCart
[ { itemDescription: 't-shirt', qty: 1, pre_orderQty: 1, price: 30, weight: 8 }, { itemDescription: 'pants', qty: 0, pre_orderQty: 1, price: 40, weight: 5 } ]
我尝试用for循环结合push()实现转换,但console.log(customsItem)始终无输出,附上当前代码:
const customsItem = []; for (var item of itemInCart) { const items = { "description":item.itemDescription, "quantity":item.qty + item.pre_orderQty, "net_weight":item.weight, "mass_unit":"oz", "value_amount":item.price, "value_currency":"USD", "origin_country":"US", } customItem.push( items ) }
修正方案
修正后的代码
const customsItem = []; for (const item of itemInCart) { const customsEntry = { "description": item.itemDescription, "quantity": item.qty + item.pre_orderQty, "net_weight": String(item.weight), // 转为字符串匹配示例格式,若后端接受数字可直接用item.weight "mass_unit": "oz", "value_amount": String(item.price), // 转为字符串匹配示例格式,若后端接受数字可直接用item.price "value_currency": "USD", "origin_country": "US" }; customsItem.push(customsEntry); } console.log(customsItem); // 现在能正常输出转换后的数组
错误原因说明
- 变量名拼写错误:你定义的目标数组是
customsItem,但push时误写成了customItem(少了末尾的s),这是导致数组一直为空、无输出的核心问题。 - 格式细节优化:示例中的
net_weight和value_amount是字符串类型,当前代码直接使用数字的话,可以转成字符串保持格式一致;如果后端接口接受数字类型,也可以省略转字符串的步骤,根据实际需求调整。
内容的提问来源于stack exchange,提问作者pelotador.1
相关产品推荐
相关产品推荐

