编辑:来自codeacademy的指示:
定义一个带有单个参数name的函数搜索。如果传递给函数的参数与朋友中的任何名字匹配,它应该将该朋友的联系信息记录到控制台并返回它。
我正在通过代码学院学习JavaScript。我正在编写一个简单的联系簿,其中包含朋友的详细信息,并且有一个搜索功能可以获取联系人的详细信息/这是代码:
var friends = {
bill: {},
steve: {}
}
friends.bill.firstName = "bill";
friends.bill.lastName = "gates";
friends.bill.number = 587678;
friends.bill.address = ['mes quarters', 'east camp'];
friends.steve.firstName = "steve";
friends.steve.lastName = "Jobs";
friends.steve.number = 67896986;
friends.steve.address = ["nch colony", "kanjur marg"];
var list = function() {
for(var friend in friends){
// console.log(friend);
}
}
var search = function(name){
for(var prop in friends)
if(name === friends[prop].firstName){
console.log(friends[prop]);
return friends[prop];
}
}
list();
search("bill");
search("steve");
在codeacademy系统中,此代码不被接受为正确。它显示以下错误:
哎呀,再试一次!看起来您的搜索功能不会返回Steve的联系信息。
(Codeacademy多次没有显示正确的错误)
我在Codeacademy论坛上发布了此帖并寻求帮助。我收到了一个回复:
回答这个问题,因为你的数据结构搞砸了。回到课程中以使其正确:
就是这样:
var friends = {}; friends.bill = { firstName: "Bill", lastName: "Gates", number: "(206) 555-5555", address: ['One Microsoft Way','Redmond','WA','98052'] }; friends.steve = { firstName: "Steve", lastName: "Jobs", number: "(408) 555-5555", address: ['1 Infinite Loop','Cupertino','CA','95014'] };
任何人都可以解释一下,我的代码究竟出了什么问题?什么是正确的方法?以下是我的问题:http://www.codecademy.com/forum_questions/52883d7c548c358401006826#answer-5288c908abf821c7450089fc
的codeacademy论坛链接答案 0 :(得分:2)
这仅仅是为了通过Codeacademy测试,还是用于制作合适的联系簿?如果是后一种情况,请使用类:
"use strict";
var Contact = function(fName, lName, number, address) {
this.firstName = fName;
this.lastName = lName;
this.number = number;
this.address = address;
};
var contacts = [];
然后,要添加联系人,请使用:
function addContact(fn, ln, nm, ad) {
contacts.push(new Contact(fn, ln, nm, ad));
}
addContact("Bill", "Gates", "(206) 555-5555", ['One Microsoft Way','Redmond','WA','98052']);
并搜索:
function searchContact(query) {
for(var x in contacts) {
if(contacts[x].firstName == query) {
return contacts[x];
}
else
return false;
}
}
但是,如果您只想通过此测试,我猜您应该模仿练习中的代码。验证程序脚本可能会检查您的姓名== "Bill"
和"Steve"
- 意味着您使用的字符串,"bill"
和"steve"
由于区分大小写而永远不会通过测试。
该测试应该可以帮助您学习编程,因此请尝试研究代码,直到找到与您所做的和有效的方法有显着差异为止!祝你好运。
答案 1 :(得分:1)
var friends= {};
friends.bill={
firstName:"Bill",
lastName:"Gates",
number:"9966334418",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve={
firstName:"Steve",
lastName:"Jobs",
number:"9966224418",
address:['banglore',]
};
var list = function(obj) {
for(var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
}
};
list(friends);
search("Steve");
答案 2 :(得分:1)
同样的事情发生在我身上,虽然我怀疑它是CodeAcademy结尾的一个错误,因为在能够显示Steve的联系信息后,我收到了这个错误:“哎呀,再试一次。它看起来像你的搜索功能不会返回比尔的联系信息。