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

JavaScript如何合并指定结构数组对象?现有方案无效求解决

解决JavaScript合并数组中对象属性的问题

嘿,我明白你的需求了!你手里有一个包含两个对象的数组,一个是员工的费用明细,另一个是items数组对象,想要把它们的属性合并成一个对象,再放到一个数组里。之前用reduce+concat不管用很正常,因为那俩方法主要是用来合并数组元素的,不是合并对象属性的。

这里给你几个简单直接的实现方案:

方案1:对象展开语法(最简洁)

如果你的环境支持ES6+,这个方法最直观:

// 原始数据
const originalData = [
  { employeeName: 'វី រឿន', docStudyFee: 415.24, docBusFee: 50, docSaleFee: 10, amount: 475.24 },
  { items: [{}, {}, {}] } // 用占位对象代替你实际的[Object]
];

// 合并成目标结构
const mergedResult = [
  { ...originalData[0], ...originalData[1] }
];

console.log(mergedResult);
// 输出:[{ employeeName: 'វី រឿន', docStudyFee: 415.24, docBusFee: 50, docSaleFee: 10, amount: 475.24, items: [{}, {}, {}] }]

方案2:Object.assign(兼容性更好)

如果需要兼容老环境,用Object.assign也能达到同样效果:

const mergedResult = [
  Object.assign({}, originalData[0], originalData[1])
];

这里第一个空对象是用来避免修改原数据的,如果直接把originalData[0]作为第一个参数,会改变原对象的内容,所以建议传空对象作为初始值。

方案3:处理多个对象的通用写法

如果你的原始数组里可能有不止两个需要合并的对象,用reduce结合Object.assign就可以通用处理:

const mergedResult = [
  originalData.reduce((mergedObj, currentObj) => {
    return Object.assign(mergedObj, currentObj);
  }, {}) // 初始值为空对象
];

这个方法会遍历数组里的每一个对象,把它们的属性依次合并到初始的空对象里,最后得到一个包含所有属性的对象,再放到数组中。

为什么之前的reduce+concat没用?

concat是用来拼接数组的,比如把多个数组合并成一个;而reduce如果配合concat,通常是用来扁平化数组或者合并数组元素,但你的需求是合并对象的属性,不是合并数组,所以这俩方法组合起来自然解决不了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:19:45