我有两个视频对象:
obj1 =
{
"name":{
"required":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"email":{
"email":true,
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"email":{
"type":"email"
},
"required":{
"type":"requiredIf"
}
}
},
"shipping":{
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"company":{
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
}
},
"country":{
"required":true,
"$model":{
"label":"",
},
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"city":{
"required":false,
"minLength":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
},
"minLength":null
}
},
"$model":{
"name":"",
"email":"",
"shipping":"",
"company":"",
"country":{
"label":"",
},
"city":""
},
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"name":null,
"email":null,
"shipping":null,
"company":null,
"country":null,
"city":null
}
}obj2 =
{
"address":{
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
}
},
"zipCode":{
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"mobile":{
"required":false,
"minLength":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
},
"minLength":null
}
},
"$model":{
"address":"",
"zipCode":"",
"mobile":"",
},
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"address":null,
"zipCode":null,
"mobile":null,
}
}我知道的一个事实是,对象1中的键不存在于对象2中,我想要一个结果对象,它是两个对象的组合。
现在,我尝试了多种方法来解决这个问题
例如:
{...obj1, "address": this.obj2.address, "mobile": this.obj2.mobile, "zipCode": this.obj2.zipCode }这将产生以下结果对象:
{
"name":{
"required":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"email":{
"email":true,
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"email":{
"type":"email"
},
"required":{
"type":"requiredIf"
}
}
},
"shipping":{
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"company":{
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
}
},
"country":{
"required":true,
"$model":{
"label":"",
},
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"city":{
"required":false,
"minLength":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
},
"minLength":null
}
},
"address":{
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
}
},
"zipCode":{
"required":true,
"$model":"",
"$invalid":false,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
}
}
},
"mobile":{
"required":false,
"minLength":false,
"$model":"",
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"required":{
"type":"requiredIf"
},
"minLength":null
}
}
"$model":{
"name":"",
"email":"",
"shipping":"",
"company":"",
"country":{
"label":"",
},
"city":"",
},
"$invalid":true,
"$dirty":false,
"$anyDirty":false,
"$error":false,
"$anyError":false,
"$pending":false,
"$params":{
"name":null,
"email":null,
"shipping":null,
"company":null,
"country":null,
"city":null
}
}根对象确实被合并,但是主对象的$model只显示obj1的键,类似地,主对象的$params也只显示obj1的属性,这最终导致$invalid返回true。
我理解,既然$model和$params是两个对象中的共享密钥,这就是为什么在我的示例中,第一个对象优先于第二个对象,那么如何确保这两个属性也共享来自两个对象的相同密钥?
对于上下文而言,obj2来自子组件,obj1是在父组件中创建的,现在从父组件中必须将两个对象作为包含所有属性的单个对象传递。
发布于 2022-01-25 18:03:01
嗨,你可以试试这段代码
Object.keys(obj2).forEach(key => {
if(key == '$model' || key == '$params') {
Object.keys(obj2[key]).forEach(subKey => {
obj1[key][subKey] = obj2[key][subKey]
})
} else
obj1[key] = obj2[key];
})https://stackoverflow.com/questions/70853397
复制相似问题