如果对象
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
}
答案 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);