这个javascript代码有什么问题吗?

时间:2013-11-17 15:16:11

标签: javascript arrays function

编辑:来自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论坛链接

3 个答案:

答案 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的联系信息后,我收到了这个错误:“哎呀,再试一次。它看起来像你的搜索功能不会返回比尔的联系信息。

相关问题