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
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐