千家信息网

JavaScript如何删除对象中不必要的属性

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了JavaScript如何删除对象中不必要的属性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。业务开发中,我们经常会遇
千家信息网最后更新 2026年11月01日JavaScript如何删除对象中不必要的属性

这篇文章主要介绍了JavaScript如何删除对象中不必要的属性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

业务开发中,我们经常会遇到:基于后端返回接口数据,前端保存到对象 Object 中,前端开发过程中为了一些场景的便利性,需要在该对象中增加相应的属性,但这些属性对于后端没有意义,保存提交时希望删除掉。

真实业务代码:保存前需要删除对应的 *Value 字段

async saveData (type, data) {  // 提交时删除多余字段  delete data.isCommonValue  delete data.isRemoteValue  await this.$request({    ...API.EDIT_SERVICE,    method: type === 'add' ? 'post' : 'put',    data  })}

上述是大家普遍的写法,但部分场景下上述写法并不是最优写法,且可能会带来一些副作用。下面通过 示例 的方式阐述一下:

示例

为了更好的展示上述情况,我们重新编写示例(仅为说明实现)。

let person = {  id: '001',  name: 'ligang',   email: 'xxx@x.com'}

诉求:在提交给后端时,需要删除 email 字段。

方式一:delete 删除

同上述给到的业务代码处理方式一样

delete person.emailconsole.log(person)     // {id: '001', name: 'ligang'}

原数据中的相关属性也会删除掉。

Reflect.deleteProperty() 允许用于删除属性,同上述 delete 行为一致。

Reflect.deleteProperty(person, 'email')

方式二:解构

形成新的对象,避免在引用原始对象的地方产生副作用。

let {id, name} = personlet newPerson = {id, name}console.log(newPerson) // {id: '001', name: 'ligang'}

会和原数据切断引用。对于保留属性个数少,该方式处理简单且易懂;保留属性过多的场景会比较复杂。

let {email, ...newPerson} = personconsole.log(newPerson) // {id: '001', name: 'ligang'}

会和原数据切断引用。对于保留属性个数多,该方式处理简单且易懂;保留属性过少的场景会比较复杂。

总结

实际使用中,强烈建议方式二来操作,不要影响原数据。特别是在mvvm框架中,原数据往往是响应式的,delete/deleteProperty 意味着切断"响应关系",delete 操作之后的数据响应就会有问题。

data () {  return {    person: {      name: 'ligang',      email: 'x@x.com'    }  }},methods: {        deleteProp () {      delete this.person.email    // this.$delete(this.person, 'email')        },  addProp () {      this.person.email = 'xxx'    this.$set(this.person, 'address', 'xxx')  }}

1.执行 delete 操作,js 对象属性剔除掉了,但页面没有及时响应,可以使用 vue 中的 this.$delete() 确保删除能触发更新视图

2.执行 add 操作,重新添加 email 及 address 属性

1.this.person.email = 'xxx' 并不具备响应式

2.this.$set(this.person, 'address', 'xxx') 具备响应式

补充

对于已经创建的实例,Vue 不允许动态添加根级别的响应式 property。下述方式都无效!

this.$set(this, 'email', '')this.$set(this.$data, 'email', '')

感谢你能够认真阅读完这篇文章,希望小编分享的"JavaScript如何删除对象中不必要的属性"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

属性 方式 对象 数据 场景 篇文章 业务 写法 字段 示例 处理 复杂 个数 代码 前端 副作用 易懂 开发 原始 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 互联网科技活动banner 以房互联网科技 广州宏创互联网科技 睿民互联网科技 碳银互联网科技有限公司 佰商互联网科技有限公司 济南华为互联网科技产业总部基地 来此购互联网科技有限公司 湖南一路畅行互联网科技 宜昌元轩互联网科技有限公司 本届互联网博览会上的黑科技 天津腾达互联网科技有限公司 深圳艾果互联网通讯科技 四川慕妮娅互联网科技有限公司 2021互联网科技公司排名 城市宝互联网科技有限公司 互联网营销推广黑科技 互联网企业和网络科技有限公司 每日互联网科技新闻 深圳互联网络科技有限公司 上海挚品互联网科技 奇酷互联网科技公司 互联网前沿科技 栖莱科技互联网股份有限公司 互联网科技公司有风险吗 想开互联网科技公司怎么样 恒生互联网科技业指数调整周期 烟台灵鸽互联网科技有限公司 科技互联网行业投资研究
0