JavaScript 对象与数组合并实战:Object.assign 与 concat 详解

作者:纸飞机

时间:2026-10-31

浏览:434

本文详解 JavaScript 中对象与数组的合并技巧。通过 Object.assign() 实现对象属性覆盖合并,利用 concat() 处理数组元素拼接,并展示如何结合 map 与 apply 实现对象数组的综合转换。附带相同值聚合案例,帮助开发者掌握常用数据操作手段。

文章目录

前言

在 JavaScript 中,对象和数组是非常基础且常用的数据结构,主要用于存储和处理各类信息。在实际开发场景中,经常遇到需要将多个对象或数组整合为一个的情况,以便进行后续的数据处理。本文将具体讲解在 JavaScript 环境下如何实现对象和数组的合并操作。

合并对象

JavaScript 提供了 Object.assign() 方法,用于将两个或多个源对象的状态复制到目标对象中。该函数接收一个目标对象以及一个或多个源对象作为参数,执行时会将所有源对象的自有可枚举属性逐个复制到目标对象上。若源对象之间存在同名属性,后出现的源对象属性值将覆盖先前的值。

例如:

var obj1 = { a: 1, b: 2 };
var obj2 = { b: 3, c: 4 };
var obj3 = { c: 5, d: 6 };

var result = Object.assign({}, obj1, obj2, obj3);

console.log(result); // 输出 { a: 1, b: 3, c: 5, d: 6 }

上述代码演示了利用 Object.assign() 将 obj1、obj2 和 obj3 合并为 result 对象的过程。因为 obj2 和 obj3 均包含属性 b 和 c,合并后 result 中 b 和 c 的值分别被更新为 3 和 5,体现了后覆盖前的规则。

合并数组

对于数组,JavaScript 提供了 concat() 方法,用于将两个或多个数组合并生成一个新数组。该方法不会修改原始数组的内容,而是返回一个包含原数组及新加入数组所有元素的新数组实例。

例如:

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr3 = [7, 8, 9];

var result = arr1.concat(arr2, arr3);

console.log(result); // 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]

以上代码展示了使用 concat() 将 arr1、arr2 和 arr3 合并为 result 数组的过程。由于示例中各数组元素无重复,最终 result 包含了所有输入数组的元素。

综合应用

在某些复杂场景下,可能需要将对象与数组混合合并。一种可行的思路是先将数组元素转换为对象形式,接着利用 concat() 将转换后的对象数组与原有对象数组合并,最后通过 Object.assign() 将所有对象合并为一个完整对象。

例如:

var arr = [1, 2, 3];
var obj = { a: 4, b: 5 };

var result = Object.assign.apply(null, arr.map(function(item) {
  return { [item]: item };
}).concat(obj));

console.log(result); // 输出 { 1: 1, 2: 2, 3: 3, a: 4, b: 5 }

上述代码首先通过 map() 将数组 arr 中的每个元素转换为以元素值为键和值的对象。随后,使用 concat() 将该对象数组与 obj 合并为一个包含所有对象的数组。最后,借助 Object.assign() 配合 apply 方法,将数组中的所有对象合并为一个单一对象。

附:JavaScript 合并数组对象中某个相同值(数组对象合并)

// 假设有以下对象数组
const arr = [
  { id: 1, value: 'A' },
  { id: 2, value: 'B' },
  { id: 3, value: 'A' },
  { id: 4, value: 'C' },
  { id: 5, value: 'B' }
];

// 使用 reduce 方法进行属性合并
const mergedArr = arr.reduce((acc, obj) => {
  const foundObj = acc.find(item => item.value === obj.value);
  if (foundObj) {
    foundObj.ids.push(obj.id); // 将相同属性的 id 添加到 ids 数组中
  } else {
    acc.push({ value: obj.value, ids: [obj.id] }); // 创建新的对象
  }
  return acc;
}, []);

console.log(mergedArr);

输出结果为

[ { value: 'A', ids: [1, 3] }, { value: 'B', ids: [2, 5] }, { value: 'C', ids: [4] } ]

总结

JavaScript 提供了 Object.assign() 和 concat() 两种核心方法,分别用于对象和数组的合并操作。这些方法具备较高的灵活性,能够应对多种数据处理需求。在实际项目开发中,熟练掌握这些合并技巧对于提升开发效率具有重要意义。

到此这篇关于js对象合并与数组合并综合应用的文章就介绍到这了,更多相关js对象合并数组合并内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章