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

如何将单属性数组对象转换为聚合后的多属性数组对象?

合并分散对象为分组完整对象的实现方案

你需要将由单个键值对对象组成的数组,按每4个一组合并为包含完整字段的对象数组,每组对应company、block、start_date、end_date四个属性。以下是两种实用的JavaScript实现方式:

方法一:循环分组 + Reduce合并

const originalArray = [
    { "company": "test" },
    { "block": "test" },
    { "start_date": "15/08/2023 15:00" },
    { "end_date": "15/08/2023 15:00" },
    { "company": "test1" },
    { "block": "test1" },
    { "start_date": "15/08/2023 15:00" },
    { "end_date": "15/08/2023 15:00" }
];

const mergedArray = [];
// 按每4个元素为一组遍历原数组
for (let i = 0; i < originalArray.length; i += 4) {
    // 截取当前组的4个元素
    const group = originalArray.slice(i, i + 4);
    // 将组内的单个键值对对象合并为一个完整对象
    const mergedObj = group.reduce((acc, curr) => ({ ...acc, ...curr }), {});
    mergedArray.push(mergedObj);
}

console.log(mergedArray);

方法二:单Reduce遍历实现

const originalArray = [
    { "company": "test" },
    { "block": "test" },
    { "start_date": "15/08/2023 15:00" },
    { "end_date": "15/08/2023 15:00" },
    { "company": "test1" },
    { "block": "test1" },
    { "start_date": "15/08/2023 15:00" },
    { "end_date": "15/08/2023 15:00" }
];

const mergedArray = originalArray.reduce((acc, curr, index) => {
    // 每4个元素的起始位置(索引0、4、8...)初始化新对象
    if (index % 4 === 0) {
        acc.push({});
    }
    // 将当前对象的键值对合并到结果数组的最后一个对象中
    Object.assign(acc[acc.length - 1], curr);
    return acc;
}, []);

console.log(mergedArray);

说明

  • 两种方法都依赖固定的分组规则:每4个元素对应一个完整对象
  • 若每组的字段顺序不固定,但字段完整,方法依然有效,因为对象合并是基于键名的
  • 运行后均可得到你需要的目标数组格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:38:10