只取form的字段,避免覆盖 Object.assign(form, res.data); res.data覆盖form的值,不获取res.data覆盖过来的新字段
只取form的字段,避免覆盖 Object.assign(form, res.data); res.data覆盖form的值,不获取res.data覆盖过来的新字段
在Vue3和JavaScript中,Object.assign()
方法用于将源对象的所有可枚举属性复制到目标对象。但是,它不会清除目标对象中已存在的属性。
如果你想要清空被 res.data
覆盖的 form
对象的特定字段,你需要手动删除这些字段。例如,如果你要清空 form
对象中的所有 res.data
中存在的字段,你可以这样做:
for (let key in res.data) {
if (form.hasOwnProperty(key)) {
delete form[key];
}
}
这段代码会遍历 res.data
中的所有键,并检查 form
对象是否有相同的键。如果有,则使用 delete
操作符删除 form
对象中的该键。
请注意,Object.assign()
是浅复制,这意味着如果 res.data
中的属性值是对象或数组,它们将被复制引用,而不是被复制一份新的对象或数组。如果你希望深度复制这些复杂数据结构,你可能需要使用其他方法,如递归复制函数或库,如lodash的 _.cloneDeep()
函数。
根据你的意思是想让res.data覆盖form里存在的属性值,但不想要form里没有的属性,可以使用以下方法:
Object.keys(form).forEach((key) => {
form[key] = res.data[key]
})
13 回答13.1k 阅读
8 回答3k 阅读
3 回答1.6k 阅读✓ 已解决
2 回答5.3k 阅读✓ 已解决
5 回答1.6k 阅读
7 回答2.3k 阅读
9 回答1.8k 阅读✓ 已解决