深入比较javascript对象,保留对象1的键和对象2的值
我希望深入比较javascript对象,保留来自基本对象的键,并在基本对象内复制来自新对象的不同值 我认为这是我想要保留的键和新对象的键之间的映射 基本对象:深入比较javascript对象,保留对象1的键和对象2的值,javascript,Javascript,我希望深入比较javascript对象,保留来自基本对象的键,并在基本对象内复制来自新对象的不同值 我认为这是我想要保留的键和新对象的键之间的映射 基本对象: { name: "Will", lastname: "Smith", age: "45", movies : [ { title: "Hancock", price: { amount: "1500"
{
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"
}
}
]
}
要在基础对象中复制的新值:
{
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的值,并将其复制到第一个对象中的actor。所有值都相同,包括嵌套对象
结果:
{
名称:“将”,
姓:“史密斯”,
年龄:"45岁",,
电影:[
{
标题:“汉考克”,
价格:{
金额:“1900”
}
},
{
标题:“双子座”,
价格:{
金额:“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
object中使用特殊前缀来告诉映射器函数值为object。base\u object['movies']=新的\u object['cinema']
。基本对象和新对象之间的键是否总是相同的?您如何知道第一个对象中的名称
键对应于第二个对象中的参与者名称
键(其他键的问题相同)?基于价值观?@DhananjaiPai yep,他们不会change@slider我以前知道比较钥匙,它们不会改变。这里,演员姓名=姓名,演员年龄=年龄。。。所以我认为,我需要一种映射,当我比较对象以匹配键并复制基本对象中的值时