当前位置: 首页 > 知识库问答 >
问题:

javascript - VUE3 Object.assign 怎么清空覆盖过来的新字段?

田俊爽
2023-09-27

怎么清空被 Object.assign(form, res.data); res.data覆盖form的值,清掉res.data覆盖过来的新字段

共有2个答案

宋宏儒
2023-09-27

根据你的意思是想让res.data覆盖form里存在的属性值,但不想要form里没有的属性,可以使用以下方法:

Object.keys(form).forEach((key) => {    form[key] = res.data[key]})
呼延晋
2023-09-27

在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() 函数。

 类似资料:
  • 我有一个pdf模板,我试图在新文档中重写它。我需要从模板PDF中获取一些字段,并在新的PDF中重写它们的值。我这样做: 但我发现了一个例外: iText。内核PDFEException:“没有用于生成间接项的关联PdfWriter。” 我做错了什么以及如何修复它?这是第七次。

  • 问题内容: 有没有人有过重写JavaScript函数的经验? 哪些浏览器支持此功能? 哪些浏览器版本支持此功能? 覆盖该功能有哪些危险? 问题答案: 绝对是“受支持的”。这是您的网页,您可以使用它进行任何操作。 我已经这样做了,可以在不修改库的情况下而是通过潜入事件来跟踪分析事件。 使用代理模式: 如果需要,您也可以绕过对原始函数的调用(代理)

  • 问题内容: 我如何能够覆盖该方法,然后捕获并更改其参数? 我已经尝试过代理方法,但是它没有用,尽管删除了在调用时打开的重写: 问题答案: 您不是要修改继承的方法,而只是将方法添加到实际上从未使用过的方法。 我在facebook中尝试了此代码,因此能够捕获到请求: 所以是的,需要将open方法添加到(window.XMLHttpRequest.prototype)而不是(window.XMLHttp

  • 我在项目中使用Crudepository进行数据库操作。当我使用由Spring实现的保存方法更新持久化数据时,其他字段将被覆盖。例如,我只发送firstName进行更新,但lastName被转换为空字段。 简单地说,我用这样的实体调用保存方法: 我正在将此JSON发送到更新方法: Spring 将此 JSON 转换为 Rest api endpoint的成员。成员.java是: 如何防止覆盖其他字

  • 问题内容: 我有一个不幸的任务,就是清理一堆旧的ColdFusion代码。查询无处不在,我正在努力将它们全部移至常见的CFC,以便于维护。 我遇到了一个问题,因为它会自动将单引号转换为双单引号。如何覆盖该行为? 更具体的信息如下。 所以这是我开始的查询: 奇怪的是,由于要显示文字,所以正在“选择”一个文字(再次,我没有写这个,我只是想稍微清理一下)。因此,在通用函数中,select子句有一个可选参

  • 4.3 ROS工作空间覆盖 所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形。 ROS 开发中,会自定义工作空间且自定义工作空间可以同时存在多个,可能会出现一种情况: 虽然特定工作空间内的功能包不能重名,但是自定义工作空间的功能包与内置的功能包可以重名或者不同的自定义的工作空间中也可以出现重名的功能包,那么调用该名称功能包时,会调用哪一个呢?比如:自定义工作空间A存在功能包 turtl