【发布时间】:2023-04-05 14:28:02
【问题描述】:
我正在做一个 freecodecamp 挑战,我被要求完成一个函数,如果传递的对象包含所有四个名称,则返回 true:“Alan”“Jeff”“Ryan”“Sarah”。 前面定义了一个对象,包含数据:
let users = {
Alan: {
age: 27,
online: true
},
Jeff: {
age: 32,
online: true
},
等等。 函数是这样开始的
function isEveryoneHere(userObj) {}
我把这个写成我完成的函数,我可以在其中返回所有 4 个名字:
for (const property in userObj) {
if (userObj) {
return userObj.hasOwnProperty(property)
}
但我仍然被告知我没有达到挑战的标准。有什么建议或建议吗?
编辑:错误消息不应直接访问用户对象
通过 用户对象应该只包含键 Alan、Jeff、 莎拉和瑞恩
通过 如果 Alan、Jeff、 Sarah 和 Ryan 是传递给它的对象的属性。
如果 Alan 不是 alan,函数 isEveryoneHere 应该返回 false 传递给它的对象的属性。
如果 Jeff 不是 传递给它的对象的属性。
如果 Sarah 不是,函数 isEveryoneHere 应该返回 false 传递给它的对象的属性。
如果 Ryan 不是 传递给它的对象的属性
编辑:
他们就是这样解决的
function isEveryoneHere(userObj) {
if (
userObj.hasOwnProperty("Alan") &&
userObj.hasOwnProperty("Jeff") &&
userObj.hasOwnProperty("Sarah") &&
userObj.hasOwnProperty("Ryan")
) {
return true;
}
return false;
}
【问题讨论】:
-
您能否添加说明您不符合条件的错误消息?
-
@PaulinaKhew 它可能是一个/多个正在测试的测试对象不返回正确的结果。通常它不会告诉你它在函数上尝试了哪些数据以避免作弊;)
-
已添加对此感到抱歉。我认为它希望我在 if 语句的参数中添加一个布尔值。但是,我最初尝试写一个 if 语句说: if (userObj) { userObj.hasOwnProperty('online')} 和其他没有让我通过的尝试,所以我尝试做一个 for...in 语句和一个在对我可以提供的解决方案进行一些研究之后使用 if 语句。
-
错误消息说您不应该直接访问对象...在您调用的函数中:userObj.hasOwnProperty(property)。直接调用对象内的函数。尝试使用 var keyArray = Object.keys(userObj); 从对象中提取键然后检查键 Array 是否只有列出的名称并且没有丢失任何名称
-
const keys = Object.keys(users);const all_here = ['Alan', 'Jeff', 'Sarah', 'Ryan'].every(el => keys.includes(el));这有帮助吗?
标签: javascript function object