合并对象
题目描述
将给定数组中的对象 [{ 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);
}