在JS中删除对象的某个属性常见的几种方案总结_javascript技巧

在 JavaScript 中,如果你想删除一个对象的某个属性,可以使用 delete 操作符。下面是一个简单的示例:

let obj = { name: 'Alice', age: 25, city: 'New York'};// 删除 'age' 属性delete obj.age;console.log(obj); // { name: 'Alice', city: 'New York' }

delete 操作符会从对象中删除指定的属性。如果属性存在,它会删除该属性并返回 true,如果属性不存在,返回 true,但对象保持不变。注意,delete 不能删除对象的不可配置属性,比如由 Object.defineProperty 设置的属性。

除了 delete 操作符,还有几种方式可以“移除”对象的某个属性,下面是几种常见的方法:

如果你不想修改原始对象,可以使用解构赋值来创建一个新对象,排除掉某个属性。

let obj = { name: 'Alice', age: 25, city: 'New York'};// 使用解构赋值来排除 'age' 属性const { age, ...newObj } = obj;console.log(newObj); // { name: 'Alice', city: 'New York' }

这种方法会创建一个新的对象 newObj,不包含 age 属性,原始对象 obj 不会被改变。

你还可以通过 Object.entries() 将对象转换为键值对数组,然后使用 filter 函数排除掉需要删除的属性,最后用 Object.fromEntries() 将结果转换回对象。

let obj = { name: 'Alice', age: 25, city: 'New York'};// 删除 'age' 属性const newObj = Object.fromEntries( Object.entries(obj).filter(([key]) => key !== 'age'));console.log(newObj); // { name: 'Alice', city: 'New York' }

这种方法也是创建了一个新的对象,不会修改原始对象。

Reflect.deleteProperty()delete 操作符的一个替代方法,它的行为更加一致,并且返回布尔值,表示是否删除成功。

let obj = { name: 'Alice', age: 25, city: 'New York'};// 使用 Reflect.deleteProperty 删除 'age' 属性Reflect.deleteProperty(obj, 'age');console.log(obj); // { name: 'Alice', city: 'New York' }

这种方法会修改原始对象,并返回删除操作的结果(truefalse)。

选择哪种方式取决于你的需求,尤其是是否需要保持原始对象不变。

下面是几种实现方式的示例:

let array = [ { name: 'Alice', age: 25, city: 'New York' }, { name: 'Bob', age: 30, city: 'Los Angeles' }, { name: 'Charlie', age: 35, city: 'Chicago' }];// 删除每个对象的 'age' 属性array.forEach(obj => { delete obj.age;});console.log(array);// [// { name: 'Alice', city: 'New York' },// { name: 'Bob', city: 'Los Angeles' },// { name: 'Charlie', city: 'Chicago' }// ]

这里我们直接遍历每个对象,使用 delete 删除 age 属性。注意,这会修改原始对象。

如果你不想修改原始对象,可以使用 map() 和解构赋值来创建一个新对象并删除指定属性。

let array = [ { name: 'Alice', age: 25, city: 'New York' }, { name: 'Bob', age: 30, city: 'Los Angeles' }, { name: 'Charlie', age: 35, city: 'Chicago' }];// 删除每个对象的 'age' 属性let newArray = array.map(({ age, ...rest }) => rest);console.log(newArray);// [// { name: 'Alice', city: 'New York' },// { name: 'Bob', city: 'Los Angeles' },// { name: 'Charlie', city: 'Chicago' }// ]

这种方法不会修改原始的 array,而是返回一个新的数组 newArray,其中每个对象都没有了 age 属性。

如果对象较复杂,可以用 Object.entries()Object.fromEntries() 结合 map() 来删除属性。

let array = [ { name: 'Alice', age: 25, city: 'New York' }, { name: 'Bob', age: 30, city: 'Los Angeles' }, { name: 'Charlie', age: 35, city: 'Chicago' }];// 删除每个对象的 'age' 属性let newArray = array.map(obj => Object.fromEntries(Object.entries(obj).filter(([key]) => key !== 'age')));console.log(newArray);// [// { name: 'Alice', city: 'New York' },// { name: 'Bob', city: 'Los Angeles' },// { name: 'Charlie', city: 'Chicago' }// ]

这种方式是通过转换为键值对数组,过滤掉不需要的属性,再转换回对象,适用于更复杂的操作。

let array = [ { name: 'Alice', age: 25, city: 'New York' }, { name: 'Bob', age: 30, city: 'Los Angeles' }, { name: 'Charlie', age: 35, city: 'Chicago' }];// 使用 Reflect.deleteProperty 删除每个对象的 'age' 属性array.forEach(obj => { Reflect.deleteProperty(obj, 'age');});console.log(array);// [// { name: 'Alice', city: 'New York' },// { name: 'Bob', city: 'Los Angeles' },// { name: 'Charlie', city: 'Chicago' }// ]

这种方法与 delete 类似,但是使用 Reflect.deleteProperty() 来删除属性。它也会修改原始对象。

到此这篇关于在JS中删除对象的某个属性常见的几种方案的文章就介绍到这了,更多相关JS删除对象某个属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/a8c4e10cd65d6a11c2ff.html
全局中部横幅
2345网址导航

2345.com热门网址导航站网罗精彩实用网址,如音乐、小说、NBA、财经、购物、视频、软件及热门游戏网址大全等,二三四五网址导航提供了多种搜索引擎入口、实用查询、天气预报、个性定制等实用功能,帮助广大网友畅游网络更轻松。

360AI办公

360AI图片工具是一款高质量在线图片工具,使用简便,让小白也能轻松上手快速出图。网站的功能有:裁剪旋转、修改尺寸、画笔标记、图片压缩、图片格式转换、AI抠图、AI擦除、AI去字迹、AI去水印、图片提取文字、无损放大、AI创作、涂鸦生成、魔法风格、图生图、AI全景、自定义布局、文章配图、广告创意生成、AI证件照等!

自助广告系统

自助广告系统,为188导航独立开发设计的功能,具有适配任何网站使用的自助广告插件,同时还提供各种功能先进实用的网址导航程序源码,以优质的服务赢取客户的信赖和喜欢。

免费自动收录导航(ss1234.com)

免费自动秒收录是一个分享优秀的网址的网站目录导航,自助式申请加入自动收录,获取高质量的自然流量,高质量外链的收录平台,是发外链神器!赶快加入自动秒收录平台!

老唐笔记

老唐笔记,分享便宜VPS优惠,VPS测评,域名优惠码,VPS教程,建站教程,便宜香港VPS,美国VPS,DeepSeek教程,搬瓦工、Vultr、Hostwinds、腾讯云优惠信息。

宿迁蒲公英网络有限公司直营:宿迁机房IDC

宿迁蒲公英网络有限公司,是一家拥有14年历史的老牌IDC公司,独自拥有宿迁三家机房的经营权,有丰富的机房网络运维经验,主要经营项目:服务器托管、服务器租用、机柜租用托管、百兆独享、G口独享、万兆口独享等大带宽、多线高防服务器、高防BGP服务器,对DDOS、syn、UDP、CC等攻击的防御有丰富经验。并提供365*24H售后服务,全年无休,服务客户为第一要务,客户的要求,我们的追求。

有益网络

有益网络(www.150cn.com)是基于云计算的互联网产品提供商,专业提供域名注册、虚拟主机、云服务器、VPS主机、挂机宝、动态vps等产品和服务,配备超6星的客服技术服务团队。

冠旭宠物网

冠旭宠物网是一个专为宠物爱好者打造的门户。这里汇聚了丰富的宠物知识、实用的养护技巧和最新的行业资讯。无论你是猫咪的“铲屎官”,还是狗狗的忠实伙伴,亦或是其他萌宠的主人,都能在冠旭宠物网找到所需。

牛蛙资源网

牛蛙资源网,每天准时更新全网精品资源免费分享平台,专注网络活动线报,技术教程,自学教程,网站源码,技术导航,绿色资源,包括绿色软件资源,办公资源,游戏图文攻略资源等,聚集了全网资源,技术,教程,分享平台!

富贵论坛

富贵论坛,二十五年老富贵论坛官网,业务涉及QQ号码、YY、淘宝、抖音、陌陌、手机靓号、游戏账号,二手交易论坛,买号卖号就上富贵交易平台官方网站。