实现removeProperty函数,该函数接受一个对象和一个属性名称
Implement the removeProperty function that takes an object and a property name
实现removeProperty函数,该函数接受对象和属性名称,并执行以下操作:
如果对象obj具有属性prop,它将从对象中删除该属性。如果属性已被删除,则返回true;否则返回false。
这个代码出了什么问题?
function removeProperty(obj,prop) {
if(obj.hasOwnProperty('prop'))
{
console.log(obj);
delete obj.prop;
return true;
}
else
{
return false;
}
}
var obj= {
name:"John"
};
removeProperty({obj,'name'});
预期的代码为:
function removeProperty(obj, prop) {
if(prop in obj){
delete obj[prop];
return true;
}else{
return false;
}
}
解释:
hasOwnProperty((方法返回一个布尔值,指示对象是否将指定的属性作为自己的(非继承的(属性。因此,要验证自己和继承的属性,也可以使用中的。
括号表示法将是比obj.pop更好的选择。由于方括号表示法允许使用点表示法不能使用的字符(如数字(,它还允许使用变量选择属性。在当前场景中,应使用括号表示法。
以下是可能有用的完整代码。有很多方法可以做到这一点。
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<p onclick="removeProperty(obj,'name')">This example calls :</p>
<script>
function removeProperty(obj,prop){
if(obj.hasOwnProperty(prop)) {
console.log(obj);
var b = delete obj.prop;
console.log(b);
return true;
}
else {
return false;
}
}
var obj= {
name:"John"
};
// removeProperty(obj,'name');
</script>
</body>
</html>
代码中的错误是由于传递给removeProperty
函数的参数引起的。它需要两个参数,而您传递的是1,这是错误的。
您试图将{obj, 'name'}
作为两个参数传递,而实际上它是一个对象的单个参数。
相反,您应该编写removeProperty(obj, 'name');
并将if(obj.hasOwnProperty('prop'))
更改为if(obj.hasOwnProperty(prop))
,因为参数是一个带字符串的变量。
以下是您的代码的工作版本:
function removeProperty(obj,prop) {
if(obj.hasOwnProperty(prop)) {
console.log(obj);
delete obj.prop;
return true;
}
else
{
return false;
}
}
var obj= {
name:"John"
};
removeProperty(obj,'name');
这里有一个优化版本:
function removeProperty(obj, prop) {
if (obj[prop] !== undefined) {
console.log(obj);
delete obj[prop];
return true;
}
return false;
};
var obj= {
name:'John'
};
removeProperty(obj,'name');
我有点处理同一个问题,但这里有它的解决方案:
function removeProperty(obj, prop) {
if (obj && obj.hasOwnProperty(prop)) {
delete obj[prop];
return true;
}
return false;
}
当他们说prop是一个属性时,他们指的是obj中任何一个名为prop的键。如果你试图在没有ticks作为值的情况下访问它,那么它应该可以工作。
注意:我知道回答这个问题已经晚了,但我在这里找不到合适的问题,所以还是回答了。感谢
function removeProperty(obj, prop) {
if(obj.hasOwnProperty(prop)){
delete obj[prop];
return true;
}
return false;
}
这是我的方法:
函数removeProperty(obj,prop({
if(obj.hasOwnProperty(prop(({
delete obj[prop];
return true;
}
return false;}
function removeProperty(obj, prop) {
if(obj.hasOwnProperty(prop)) {
delete obj[prop]
return true
} else {
return false;
}
}
function removeProperty(obj, prop) {
if (obj[prop] != undefined) {
delete obj[prop];
return true;
} else {
return false;
}
return null;
}
尝试通过以下任何方法检查对象中是否存在属性:
- object.hasOwnProperty(propName(
- 对象中的propName
- 正在与未定义的对象.propName进行比较!==未定义的
function removeProperty(obj, prop) {
if('undefined' !== typeof(obj[prop])){
delete obj[prop];
return true;
}
return false;
//return false;
}
这是做这个问题的另一个逻辑,但不是有效的逻辑,因为它变异了原始对象,这不是推荐的好做法。
解决这个问题的另一种方法是使用spread操作符,它不会改变原始对象,而是创建新对象的副本。
function removeProperty(obj, prop) {
if(obj?[prop]){
const {prop, ...obj} = obj;
return true;
}
return false;
}
This solution might not work in old versions of javascript before ES6 as spread operator is availaible from ES6.
使用下面的示例方法:
function removeProperty(obj, prop) {
if(prop in obj) {
delete obj[prop];
console.log(obj); //to print out the left over
return true ;
}else{
return false;
}
}
const myObject = {
name: "John Doe",
email: "john@gmail.com",
phone_no: +234-802-894-7884,
cc_code: 123
}
Let result = removeProperty(myObject, 'cc_code') ;
console.log(result);
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么