javascript - 深入比较 javascript 对象并保留对象 1 的键和对象 2 的值
问题描述
我想深入比较 javascript 对象,保留基础对象中的键,并从基础对象中的新对象复制不同的值。
我认为这是我想保留的键和新对象的键之间的一种映射。
基础对象:
{
name: "Will",
lastname: "Smith",
age: "45",
movies : [
{
title: "Hancock",
price: {
amount: "1500"
}
},
{
title: "Gemooni",
price: {
amount: "2500"
}
}
]
}
要在基础对象中复制的新值:
{
actor_name: "Will",
actor_firstname: "Smith",
actor_age: "45",
cinema : [ // for movies
{
title: "Hancock",
price: {
amount: "1900"
}
},
{
title: "Gemini",
price: {
amount: "3000"
}
}
]
}
在这里,我想保留 actor_name 的值并将其复制到第一个对象中的一个演员。所有值都相同,包括嵌套对象。
结果 :
{
name: "Will",
lastname: "Smith",
age: "45",
movies : [
{
title: "Hancock",
price: {
amount: "1900"
}
},
{
title: "Gemini",
price: {
amount: "3000"
}
}
]
}
任何想法?非常感谢!
解决方案
我建议你创建映射对象。
var src = {
a1: "foo_a",
b1: "foo_b",
}
var map = {
a: "a1",
b: "b1",
}
现在的解决方案是
function mapper(src,map) {
var result = {};
for(let i in map) result[i] = src[map[i]];
return result;
}
var dst = mapper(src,map); // { a: "foo_a", b: "foo_b" }
这并不能直接解决深度映射,但您可以在map
对象中使用特殊前缀来告诉映射器函数该值是对象。
推荐阅读
- php - 使用ajax脚本时SQL搜索不返回任何结果
- java - 在 android studio (java) 中写 toast 的错误
- python - 包含一千多个链接的 CSV 文件需要将文本提取/抓取到另一个 CSV 文件中
- html - 使用 Django 的 Bootstrap modal 不显示(取自官方网站)
- android - 集合和值无法显示在 Cloud Firestore 中
- laravel - 如何在laravel中找到优先级的用户
- python - 将张量数据裁剪到包围体
- image-processing - 光流估计和视差估计有什么区别?
- java - 在java中逐渐增加笔画宽度
- r - 使用 R 闪亮的 UDF 的动态输入