delete 删除对象属性
参考
1.使用delete运算符
例:
1) 使用点属性访问器删除:
1
|
delete object.property; |
在属性访问器上应用delete
运算符时,运算符会从对象中删除相应的属性:
1
2
3
|
const obj = {name: '十六个人博客' ,url: 'rwlok.com' }; delete obj.url; console.log(obj); // { name: '十六个人博客' } |
2) 使用方括号属性访问器删除:
1
2
|
delete object[ 'property' ]; // orconst name = 'dynamicProperty'; delete object[name]; |
使用delete
运算符删除属性是可变的,因为它会改变原始对象。
如果要删除的属性名称是动态确定的,则可以使用方括号语法:
1
2
3
4
|
const obj = { name: '十六个人博客' , url: 'rwlok.com' }; const name = 'url' ; delete obj[name]; console.log(obj); // { name: '十六个人博客' } |
2.使用rest解构对象
1) 属性名称已知:
1
|
const { property, ...restObject } = object; |
应用解构和rest
语法后,restObject
将包含与object
相同的属性,只是没有删除的属性。
1
2
3
4
5
6
7
|
const obj= { name: '十六个人博客' , url: 'rwlok.com' }; const { url, ...objRest } = obj; console.log(objRest); // { name: '十六个人博客' } console.log(obj); // { name: '十六个人博客',url: 'rwlok.com' } |
2) 属性名称是动态的:
1
2
|
const name = 'property' ; const { [name]: removedProperty, ...restObject } = object; |
如果要删除的属性名称是动态确定的,则可以使用动态属性名称解构语法:
1
2
3
4
|
const obj = { name: '十六个人博客' , url: 'rwlok.com' }; const name = 'url' ; const { [name]: removedProperty, ...objRest } = obj; console.log(objRest); // { name: '十六个人博客' } |
rest结构方法还可以一次性删除多个属性:
1
2
3
4
5
6
7
|
const obj = { name: '十六个人博客' , url: 'rwlok.com' , title: '卡卡测速网' , }; const { url, title, ...objRest } = obj; console.log(objRest); // { name: '十六个人博客' } |
附:通过赋值得到方式
1
2
3
4
5
6
7
8
9
10
11
12
|
const car = { color: 'blue' , brand: 'Ford' } const prop = 'color' const newCar = Object.keys(car).reduce((object, key) => { if (key !== prop) { object[key] = car[key] } return object }, {}) |
总结