[英]Object.Assign() without overriding existing properties
原谅标题,因为我不确定这是否可能。
我有一个像这样的json模型
json 模型“数据”
{
"RegisteredAddress": "1 street, Sw3 1aq",
"TradingAddress": "2 street, sw4, 5ad",
}
我想映射到一个看起来像这样的模型
AddressModel.ts 'addressModel'
{
"RegisteredAddress": null,
"TradingAddress": null,
"PreviousAddresses": ["Previous Address Street, RH10 1BG"]
}
我可以使用Object.Assign(this.addressModel, data); 不覆盖 Address.ts 模型上现有的填充属性。 我本质上只想填充 json 模型中的字段,而不覆盖正在分配的 json 上不存在的任何现有属性。 最终结果应该是
AddressModel.ts 'addressModel'
{
"RegisteredAddress": "1 street, Sw3 1aq",
"TradingAddress": "2 street, sw4, 5ad",
"PreviousAddresses": ["Previous Address Street, RH10 1BG"]
}
了解我可以手动映射这些属性,但这是一个示例,我正在使用更大的模型。
如果您想为此使用Object.assign
,您可以将所有内容分配给一个最后列出this.addressModel
的新对象:
this.addressModel = Object.assign({}, data, this.addressModel);
这样,当this.addressModel
具有也在data
属性时,它“获胜”。
了解我可以手动映射这些属性,但这是一个示例,我正在使用更大的模型。
模型的大小在这里并不重要,它是一个循环,无论它是在Object.assign
还是在您的代码中。 代码中的循环类似于:
for (const [key, value] of Object.entries(data)) {
if (!(key in this.addressModel)) { // Or `!this.addressModel.hasOwnProperty(key)` or `!Object.prototype.hasOwnProperty.call(this.addressModel, key)` depending on what you want to check and your style
this.addressModel[key] = value;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.