javascript - 如何将对象的两个对象合并为一个对象
问题描述
如何将对象的两个对象合并为一个对象?
例子
let obj1 = {monkey:{size: 120, color: "black"}, cat: {size: 30, color: "gray"}}
let obj2 = {monkey:{country: "africa", test: "test"}, cat: {country: "all", testCat: "testCat"}}
输出应该是:
{monkey:{size: 120, color: "black", country: "africa", test: "test"}, cat: {size: 30, color: "gray", country: "all", testCat: "testCat"}}
我不知道那里有多少动物。
像这样的东西
let merged = {...obj1, ...obj2}
解决方案
我们需要知道我们必须合并多少个对象,所以我将它们分组到一个数组中。
这个解决方案可能看起来很糟糕,但它有效:)
let obj1 = {
monkey: {
size: 120,
color: "black"
},
cat: {
size: 30,
color: "gray"
}
};
let obj2 = {
monkey: {
country: "africa",
test: "test"
},
cat: {
country: "all",
testCat: "testCat"
}
};
let objects = [obj1, obj2];
let output = {};
objects.map(function(obj) {
var keys = Object.keys(obj);
keys.map(function(key) {
if (!output[key])
output[key] = obj[key];
else {
var keyss = Object.keys(obj[key]);
keyss.map(function(item) {
output[key][item] = obj[key][item];
});
}
});
});
console.log(output);
使用箭头函数进行优化。
objects.map(obj =>Object.keys(obj).map(key => output[key] ? Object.keys(obj[key]).map( item =>output[key][item] = obj[key][item] ) : output[key] = obj[key] ));
推荐阅读
- error-handling - 如何防止 Apollo 客户端 useQuery 中的错误传播?
- react-native - 我有时会意外结束流
- java - 如何从 Android 应用程序调用带有不记名令牌的 REST API?
- eclipse - 为什么 Eclipse 不断搜索主要类型,我该如何阻止它?
- azure - 使用 MS Graph API 和 Postman 调用 Teams,不支持的 AAD 身份
- javascript - 清理简单的联系表格
- android - 如何在 Kotlin 中只读取文本文件中的指定行?
- python - ValueError:形状(399,1)和(2,)未对齐:1(dim 1)!= 2(dim 0)
- python - 使用特定公式按时间序列分组
- python - 使用 pyinstaller 制作的 exe 文件被 Windows Defender 报告为病毒威胁