从对象中删除属性

时间:2019-10-27 04:44:06

标签: javascript object

  

如果对象obj具有属性prop,该函数将从对象中删除该属性并返回true,在所有其他情况下返回false。

现在,它返回正确的值,但是显示该属性是否已删除的测试失败。

是因为我要从对象的新数组而不是原始对象本身来delete

function removeProperty(obj, prop) {

  let newObj = Object.keys(obj);

  if(newObj.includes(prop)){

     delete newObj.prop

     return true

    }


  return false

}

2 个答案:

答案 0 :(得分:4)

似乎是希望对obj进行突变。在这种情况下,您将完全创建呼叫者无法访问的新对象。您应该更改代码以从obj

中删除
if (obj.hasOwnProperty(prop)) {
  delete obj[prop];
  return true;
}
return false;

这是hasOwnProperty Documentation

的文档

答案 1 :(得分:1)

当前,您正在尝试从键数组而不是对象中删除,因此您传递的对象不会更改。相反,您需要从obj中删除。另外,由于prop是动态的,因此删除时需要使用bracket notation。最后,要检查prop是否是obj中的一个属性,您可以像这样使用in关键字:

function removeProperty(obj, prop) {
  if (prop in obj) {
    delete obj[prop];
    return true;
  }
  return false;
}

const obj = {
  prop: "name",
  age: 20
}

const res = removeProperty(obj, "prop");
console.log(obj);
console.log(res);