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

寻求JavaScript算法:将Products模式数据转换为Reward模式

JavaScript 数据转换:Products 转 Reward 格式

转换逻辑

核心是生成基于产品details列表的笛卡尔组合:

  • 先确定需要生成的分组数:等于所有产品中details数组的最大长度
  • 对每个分组索引,为每个产品匹配对应索引的details项;若产品的details长度不足该索引,则复用其最后一项的属性值
  • 合并产品基础信息(id、name_fa)与details的属性,并将数值类型转为字符串格式

代码实现

const products = [
  { 
    id: "65864",
    name_fa:"پک دفتر 40 برگ وزيري شوميز کلاسيک 40 ", 
    details:[{master: 5,slave: 0,slave2: 0},{master: 11,slave: 0,slave2: 0}] 
  },
  { 
    id: 67532,
    name_fa: "100-بازی لونا", 
    details:[{master: 0,slave: 5,slave2: 0}] 
  }
];

// 计算需要生成的分组数:取所有产品details数组的最大长度
const maxGroupCount = Math.max(...products.map(p => p.details.length));

// 生成目标reward数组
const reward = Array.from({ length: maxGroupCount }, (_, groupIndex) => {
  const productGroup = products.map(product => {
    // 获取当前分组对应的details项,超出长度则复用最后一项
    const targetDetail = product.details[groupIndex] || product.details.at(-1);
    return {
      id: String(product.id),
      name_fa: product.name_fa.trim(),
      master: String(targetDetail.master),
      slave: String(targetDetail.slave),
      slave2: String(targetDetail.slave2)
    };
  });
  return { products: productGroup };
});

// 输出结果
console.log(JSON.stringify(reward, null, 2));

代码说明

  1. 分组数计算:通过Math.max(...products.map(p => p.details.length))获取所有产品中details的最长长度,确定最终要生成多少组产品列表
  2. 细节项匹配:使用product.details[groupIndex] || product.details.at(-1)处理长度不足的情况,确保每个分组中所有产品都有对应的细节数据
  3. 格式统一:将id、master、slave、slave2转为字符串类型,同时去除name_fa的首尾空格,完全匹配目标格式

输出结果

运行代码后,输出的reward结构与目标格式完全一致:

[
  {
    "products": [
      {
        "id": "65864",
        "name_fa": "پک دفتر 40 برگ وزيري شوميز کلاسيک 40",
        "master": "5",
        "slave": "0",
        "slave2": "0"
      },
      {
        "id": "67532",
        "name_fa": "100-بازی لونا",
        "master": "0",
        "slave": "5",
        "slave2": "0"
      }
    ]
  },
  {
    "products": [
      {
        "id": "65864",
        "name_fa": "پک دفتر 40 برگ وزيري شوميز کلاسيک 40",
        "master": "11",
        "slave": "0",
        "slave2": "0"
      },
      {
        "id": "67532",
        "name_fa": "100-بازی لونا",
        "master": "0",
        "slave": "5",
        "slave2": "0"
      }
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:05:37