javascript - 这段 JavaScript 代码有什么问题吗?

标签 javascript arrays function

编辑: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/

相关文章:

python - 如何返回带有向后参数的新函数

javascript - Rails 从一个变量中减去另一个变量

javascript - 如何在加载时将 map 缩放到标记?

javascript - Vue 资源 $http 未定义

javascript - 从 asp :RadioButtonList with jQuery 获取所选值的属性

javascript - 有没有办法在单击时将一个 div 的文本放入另一个 div 中?

javascript - Internet Explorer 的 Fancybox Iframe 错误

在 C 中更改字符串数组中的字符

C 使用数组将字符串转换为整数

c# - 将对象转换为 byte[]