gpt4 book ai didi

JavaScript:返回对象的属性

转载 作者:行者123 更新时间:2023-11-30 08:26:34 25 4
gpt4 key购买 nike

我正在做一个来自 freeCodeCamp 的挑战,叫做“Profile Lookup”。我的问题似乎是我无法返回对象内属性的值。我正在使用点表示法,但也尝试过使用括号表示法。

目标是创建一个循环遍历对象数组 contacts 的函数,以查找给定的 firstName 是否在所述数组中以及该对象是否包含给定 prop

如果 firstNameprop 都存在,我们必须返回属性的值。

如果找到了 firstName 但没有找到 prop,那么我们返回“No such property”。

如果未找到 firstName,我们将返回“No such contact”。

这是我的代码:

function lookUpProfile(firstName, prop){
// Only change code below this line
for(var i = 0; i<contacts.length; i++){
if(contacts[i].firstName == firstName){
if(contacts[i].hasOwnProperty(prop))
return contacts.prop;
else
return "No such property";
}
else
return "No such contact";
}

// Only change code above this line
}

这是它应该循环的对象数组:

var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
}
];

编辑:当我更改为括号表示法然后返回点表示法时,我一定是在 return contacts[i].prop 中删除了 [i]。即使我重新应用它,我也会遇到同样的问题。这是更新后的功能:

function lookUpProfile(firstName, prop){
// Only change code below this line
for(var i = 0; i<contacts.length; i++){
if(contacts[i].firstName == firstName){
if(contacts[i].hasOwnProperty(prop))
return contacts[i].prop;
else
return "No such property";
}
else
return "No such contact";
}

// Only change code above this line
}

最佳答案

你必须返回变量的值作为键

return contact[i][prop]; 

通过执行 contacts[i].prop,您将返回名为 prop 的属性:contact[i]['prop']

完整函数

function lookUpProfile(firstName, prop){
// Only change code below this line
for(var i = 0; i<contacts.length; i++){
if(contacts[i].firstName == firstName){
if(contacts[i].hasOwnProperty(prop))
return contacts[i][prop];
else
return "No such property";
}
else
return "No such contact";
}

// Only change code above this line
}

此外,您还为每个案例返回了第一次迭代的内容。即使名称稍后出现在数组中。让我们试试看

function lookUpProfile(firstName, prop) {   
// Try to find the right contact
for(var i = 0; i<contacts.length; i++) {
// Name is found
if(contacts[i].firstName == firstName){
// Return prop if exist, or error message
if(contacts[i].hasOwnProperty(prop))
return contacts[i][prop];
else
return "No such property";
}
}
// No one with this name is found, return error
return "No such contact";
}

我的做法(未测试)

function lookUpProfile(firstName, prop) {   
let contact = null
// Try to find the right contact
contacts.forEach(c => {
if (!contact && c && c.firstName && c.firstName == firstname) {
contact = c
}
})

if (!contact)
return "No such contact";
return contact.hasOwnProperty(prop) ? contact[prop] : "No such property"
}

关于JavaScript:返回对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44636858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com