编辑:codeacademy 的说明:
Define a function search that takes a single argument, name. If the argument passed to the function matches any of the first names in friends, it should log that friend's contact information to the console and return it.
我正在通过代码学院学习 JavaScript。我正在编写一个简单的通讯录,其中有 friend 的详细信息,并且有一个搜索功能来获取联系人的详细信息/这是代码:
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 系统中不被认为是正确的。它显示以下错误:
Oops, try again! It looks like your search function doesn't return contact information for Steve.
(Codeacademy 多次未显示正确的错误)
我在 Codeacademy 论坛上发布了此内容并寻求帮助。我收到一条回复:
To answer the question, because your data structure is messed up. Go back into the lesson to get it right:
It's like this:
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'] };
谁能解释一下,我的代码到底出了什么问题?正确的方法是什么?这是我的问题的 Codeacademy 论坛链接:http://www.codecademy.com/forum_questions/52883d7c548c358401006826#answer-5288c908abf821c7450089fc
最佳答案
这只是为了通过 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"
由于区分大小写,永远不会通过测试。
该测试应该帮助您学习编程,因此请尝试研究代码,直到您发现与您所做的和有效的有显着差异!祝你好运。
关于javascript - 这段 JavaScript 代码有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032336/