You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组映射中拆分SKU并复制对象的需求咨询

解决方案

要处理CSV行中逗号分隔的多个SKU,生成对应数量的对象(首个保留原salesTax,其余设为0),可以通过拆分SKU数组 + 扁平化映射实现,核心代码如下:

完整示例代码

// 模拟CSV解析后的行数据
const csvRows = [
  { SKU: "SKU-01", name: "Product A", salesTax: 0.08, price: 100 },
  { SKU: "SKU-1, SKU-2", name: "Product B", salesTax: 0.06, price: 200 },
  { SKU: "SKU3, SKU4, SKU5", name: "Product C", salesTax: 0.1, price: 150 }
];

const processedData = csvRows.flatMap(row => {
  // 拆分SKU并去除每个项的前后空格
  const skus = row.SKU.split(',').map(sku => sku.trim());
  
  // 为每个SKU生成对应对象
  return skus.map((sku, index) => ({
    sku: sku,
    productName: row.name,
    salesTax: index === 0 ? row.salesTax : 0,
    price: row.price
    // 可添加其他需要映射的字段
  }));
});

// 输出结果
console.log(processedData);

关键逻辑说明

  • 用flatMap替代map:flatMap会将每行生成的多个对象数组自动扁平化,最终得到一维的对象数组,避免嵌套结构。
  • SKU拆分与清洗:通过split(',')分割字符串,再用trim()处理每个SKU的前后空格,兼容带空格的分隔格式(如"SKU-1, SKU-2")。
  • salesTax赋值规则:遍历SKU数组时,通过index === 0判断是否为首个SKU,是则保留原salesTax值,其余直接设为0。

可选优化(处理空SKU)

如果CSV行中可能存在空SKU(如", SKU-2"),可以添加过滤逻辑去除无效项:

const skus = row.SKU.split(',')
  .map(sku => sku.trim())
  .filter(sku => sku); // 过滤空字符串

内容的提问来源于stack exchange,提问作者awariat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:25:24