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

如何将两个JSON对象合并为含ec_Event字段的数组结构?

问题:将遍历得到的多个对象合并为指定结构

我正在遍历buyProductData对象并获取data属性,之后解析为JSON:

Object.entries(buyProductData).forEach(entry => {
  const [key, value] = entry;
  if(typeof value === 'object') {
    const data = JSON.parse(value.getAttribute('data-tracking-payload'));
    console.log(data);
  }
});

console.log(data)返回两个对象:

{pid: '9783834649867', sku: '9783834649867', name: 'Book 1'}
{pid: '9683271123215', sku: '7552163721', name: 'Book 2'}

我想将这两个对象合并成如下结构:

{
  ec_Event : [
    {
      pid: '9783834649867', sku: '9783834649867', name: 'Book 1'
    }, {
      pid: '9683271123215', sku: '7552163721', name: 'Book 2'
    }
  ]
}

尝试了let merge = {...data}但无法完成合并,求解决方法。

解决方案

你需要先创建一个数组来收集所有解析后的对象,最后再把这个数组放到ec_Event字段中。{...data}只能扩展单个对象,无法实现多个对象的收集合并,正确的做法如下:

// 初始化空数组用于收集数据
const eventArray = [];

Object.entries(buyProductData).forEach(entry => {
  const [key, value] = entry;
  if(typeof value === 'object') {
    const data = JSON.parse(value.getAttribute('data-tracking-payload'));
    // 将每个解析后的对象加入数组
    eventArray.push(data);
  }
});

// 组合成目标结构
const result = {
  ec_Event: eventArray
};

console.log(result);

也可以用更简洁的链式写法实现:

const result = {
  ec_Event: Array.from(Object.entries(buyProductData))
    .filter(([key, value]) => typeof value === 'object')
    .map(([key, value]) => JSON.parse(value.getAttribute('data-tracking-payload')))
};

console.log(result);

这两种方式都能把遍历得到的多个对象收集到数组中,最终生成你需要的ec_Event结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:39:59