跳到主要内容

合并对象

题目描述

将给定数组中的对象 [{ a: 1 }, { b: 2 }, { c: 3 }, ……] 合并成一个对象 { a: 1, b: 2, c: 3, ……}

解法一:reduce

思路

可以使用 reduce 方法来解决这个问题。具体来说,可以将数组中的每个对象的键值对合并到一个新的对象中。

代码

function mergeObject(arr: Record<string, any>[]): Record<string, any> {
return arr.reduce((prev, curr) => {
for (const key in curr) {
if (curr.hasOwnProperty(key)) {
prev[key] = curr[key];
}
}
return prev;
}, {});
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组 arr 的长度。
  • 空间复杂度:O(1)。

解法二:Object.assign

思路

可以使用 Object.assign 方法将数组中的每个对象的键值对合并到一个新的对象中。

代码

function mergeObject(arr: Record<string, any>[]): Record<string, any> {
return Object.assign({}, ...arr);
}