在检查对象是否具有某些属性时,我在Free Code Camp课程上遇到了一些麻烦。
在本课程中,我们应该使用hasOwnProperty()
检查users
对象是否包含Alan
,Jeff
,Sarah
和{{ 1}}。如果存在所有用户,则返回Ryan
,否则,如果缺少这些用户,则代码需要返回true
。
我已经尝试了一个多小时,这是我最后的尝试,但是我无法弄清楚如何删除其中一个名称时如何返回false
的代码。我倾向于过度考虑我的代码,因此我可能会想得太辛苦了。
提前谢谢!很抱歉,是否曾经有人问过这样的问题。我什么都找不到。
false
答案 0 :(得分:2)
您不需要遍历属性。您应该遍历要查找的名称数组。
function isEveryoneHere(obj) {
// change code below this line
for (let name of required) {
if (!obj.hasOwnProperty(name)) {
return false;
}
}
return true;
// change code above this line
}
let users = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: true
},
Ryan: {
age: 19,
online: true
}
};
let users2 = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
Jane: {
age: 48,
online: true
},
Ryan: {
age: 19,
online: true
}
};
const required = ['Alan', 'Jeff', 'Sarah', 'Ryan'];
console.log(isEveryoneHere(users));
console.log(isEveryoneHere(users2));
答案 1 :(得分:1)
我会遍历每个人,如果值是continue
,如果值不是return false
,那么它会好。如果我们将其移到循环末尾,则返回true
。
let users = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: true
},
Ryan: {
age: 19,
online: true
}
};
function isEveryoneHere(obj) {
// change code below this line
for (let name in obj) {
if(!obj.hasOwnProperty(name) || !obj[name].online){
return false;
}
}
return true;
// change code above this line
}
console.log(isEveryoneHere(users));
答案 2 :(得分:1)
试试吧。有很多方法可以做到这一点,但这是一个很好的解决方案。我从here砍掉了这个主意。
let users = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: true
},
Ryan: {
age: 19,
online: true
}
};
function isEveryoneHere(obj) {
// change code below this line
var arr = ["Alan", "Jeff", "Sarah", "Ryan"];
var hasAllKeys = arr.every(function(item){
return obj.hasOwnProperty(item);
});
return hasAllKeys;
// change code above this line
}
isEveryoneHere(users);
答案 3 :(得分:0)
在示例中,用户中的语句“ Alan”返回“ true”。你为什么不能做这样的事情:
用户中的'Alan'&&用户中的'Sarah'和用户中的'Jeff'...等等。
??
答案 4 :(得分:0)
for in循环遍历每个属性名称并存储在数组中。如果传递的obj不具有array(name)的属性,则返回false。
[{employeeID: "123",
name : "abc",
gender: "F"},
{employeeID: "345",
name : "def",
gender: "F"}
]
答案 5 :(得分:0)
这有效
let users = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: true
},
Ryan: {
age: 19,
online: true
}
};
function isEveryoneHere(obj) {
if(users.hasOwnProperty('Alan', 'Jeff','Sarah','Ryan')){
return true;
}
return false;
}
console.log(isEveryoneHere(users));
答案 6 :(得分:0)
我写了这个,它有效:
function isEveryoneHere(obj) {
// Only change code below this line
let filter = ['Alan', 'Jeff', 'Sarah', 'Ryan'];
let result = true;
filter.forEach(
(u) => {
if(!obj.hasOwnProperty(u)){
result = false;
}
}
);
return result;
// Only change code above this line
}