Javascript 为什么不是';t此工作(删除与对象属性匹配的属性)
为什么这不起作用?实现removeproperty函数,该函数接受对象和属性名称,如果它们匹配则将其删除,如果不匹配则返回trueJavascript 为什么不是';t此工作(删除与对象属性匹配的属性),javascript,object,Javascript,Object,为什么这不起作用?实现removeproperty函数,该函数接受对象和属性名称,如果它们匹配则将其删除,如果不匹配则返回true function removeProperty(obj, prop) { const keys = Object.keys(obj) for (const key of keys) { if (key === obj[prop]) { delete obj[prop] return true } }
function removeProperty(obj, prop) {
const keys = Object.keys(obj)
for (const key of keys) {
if (key === obj[prop]) {
delete obj[prop]
return true
}
}
return false
}
因为
obj[prop]
是值。将键
与道具
进行比较:
function removeProperty(obj, prop) {
const keys = Object.keys(obj)
for (const key of keys) {
if (key === prop) {
delete obj[prop]
return true
}
}
return false
}
但是,由于对象属性是唯一的,所以不需要迭代它们。使用检查属性是否存在:
function removeProperty(obj, prop) {
if (prop in obj) {
delete obj[prop]
return true
}
return false
}
因为
obj[prop]
是值。将键
与道具
进行比较:
function removeProperty(obj, prop) {
const keys = Object.keys(obj)
for (const key of keys) {
if (key === prop) {
delete obj[prop]
return true
}
}
return false
}
但是,由于对象属性是唯一的,所以不需要迭代它们。使用检查属性是否存在:
function removeProperty(obj, prop) {
if (prop in obj) {
delete obj[prop]
return true
}
return false
}
所以,刚刚修复了if to 如果(对象[键]==对象[属性])
它成功了。有人能解释一下这与问题代码之间的区别吗那么,就把if改成 如果(对象[键]==对象[属性])
它成功了。有人能解释一下这与问题代码之间的区别吗?您不需要迭代键来删除单个属性
函数removeProperty(对象、属性){
如果(对象类型[属性]!=“未定义”){
删除obj[prop];
返回true;
}
返回false;
}
不需要迭代键来删除单个属性
函数removeProperty(对象、属性){
如果(对象类型[属性]!=“未定义”){
删除obj[prop];
返回true;
}
返回false;
}
设o={a:1,b:2};
removeProperty(o,‘a’)
函数removeProperty(对象、属性){
删除obj[prop];
}
console.log(o)
设o={a:1,b:2};
removeProperty(o,‘a’)
函数removeProperty(对象、属性){
删除obj[prop];
}
console.log(o)
这里不清楚“如果匹配”是什么意思prop
在代码中并没有真正用作属性名。不清楚“如果它们匹配”在这里的含义prop
在代码中并没有真正用作属性名。这是错误的解决方案。如果有多个属性具有相同的值,则此操作无效。您需要查找键,而不是属性的值。见Ori Drori的答案。这是错误的解决方案。如果有多个属性具有相同的值,则此操作无效。您需要查找键,而不是属性的值。见Ori Drori的答案。in是如何工作的?这仅仅是针对对象的吗?我添加了一个链接,可以深入解释。中的描述是:如果指定的属性位于指定的对象或其原型链中,in运算符将返回true。in如何工作?这仅仅是针对对象的吗?我添加了一个链接,可以深入解释。
中的说明是:如果指定的属性位于指定的对象或其原型链中,则in运算符返回true。