js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法

示例

1、基础版

var a = { id: 18, age: 20, name: "zhangsan", config: { sex: "nan" } };

//filterarr是需要删除的属性

const filterarr = ["name"];

// 这里a是对象,里边是键值对,需要通过对象名[属性名] 找到其对应的值,属性名可以理解为特殊的下标

for (key in a) {

filterarr.find((item) => {

if (key === item) {

delete a[item];

}

});

}

console.log(a); { id: 18, age: 20, config: { sex: "nan" } }

2、进阶版

var Array = [{id:1,name:'小明'},{id:2,name:'小红'},{id:3,name:'小红',showPinYin:false}]

const isPinYin = Array.find( v => (v.showPinYin !== undefined) );

console.log(isPinYin); // {id: 3, name: '小红', showPinYin: false}

const filterarr = ["name"];

// 这里a是对象,里边是键值对,需要通过对象名[属性名] 找到其对应的值,属性名可以理解为特殊的下标

for (key in isPinYin) {

filterarr.find((item) => {

if (key === item) {

delete isPinYin[item];

}

});

}

console.log(Array); // [{id:1,name:'小明'},{id:2,name:'小红'},{id:3,showPinYin:false}]

1、删除一个对象上的属性

1.1、delete

语法

delete 对象.属性名

const car = {color: '蓝色', age: 18 }

delete car.age

console.log(car) // {color: '蓝色'}

delete car['age']

console.log(car) // {color: '蓝色'}

1.2、es6之解构赋值

const car = {color: '蓝色', age: 18 }

var { age, ...newCar } = car

console.log(newCar); // {color: '蓝色'}

1.3、es6之反射

语法

Reflect.deleteProperty(对象,属性名)

const car = {color: '蓝色', age: 18 }

Reflect.deleteProperty(car,"age");

console.log(car); // {color: '蓝色'}

2、判断对象中是否有某一属性的四种方法

2.1、obj.hasOwnProperty()

const obj = {

name:'朱元璋',

}

console.log(obj.hasOwnProperty('name')); //true

console.log(obj.hasOwnProperty('age')); //false

2.2、!==

const obj = {

name:'朱元璋',

}

console.log(obj.name !== undefined); //true

console.log(obj.age !== undefined); //false

2.3、Object.keys

const obj = {

name:'朱元璋',

}

Object.keys(obj).indexOf("name") // 0

Object.keys(obj).indexOf("age") // -1

2.4、ES6 属性名 in 对象,返回一个布尔值

const obj = {

name:'朱元璋',

}

console.log("name" in obj) // true

console.log("age" in obj) // false