【发布时间】:2017-05-12 20:14:03
【问题描述】:
我正在自学 JavaScript,我从阅读教程和书籍(如 Eloquent)和文章(例如 Medium)开始。我也在做一些免费课程,特别是两个:freeCodeCamp 和 CodeAcademy。
今天我不得不面对 CodeAcademy 上的联系人列表练习,我不确定我是否理解正确。
经过一些提示,这是我想出的最终代码:
var friends = {
bill: {
firstName: "Bill",
lastName: "Gates",
number: "555 555 555",
address: ["One Miscrosoft Way", "Redmond", "WA", "98052"]
},
steve: {
firstName: "Steve",
lastName: "Jobs",
number: "333 333 333",
address: ["Apple's street", "Silicon Valley", "SV", "87368"]
}
};
var list = function(friends) {
for (var firstName in friends) {
console.log(firstName);
}
};
var search = function(name) {
for (var key in friends) {
if (friends[key].firstName === name) {
console.log(friends[key]);
return friends[key];
}
}
};
list(friends);
search("Steve");
.as-console-wrapper { max-height: 100% !important; top: 0; }
我理解了 var friends 对象和第一个函数。 但是第二个功能呢?如果他们不在联系人列表中,为什么我需要使用“姓名”和“关键”词。你能解释一下代码的真正作用吗?
另外,在练习结束时,CodeAcademy 把这个最终代码用来做我想象的事情:
list(friends);
search("Steve");
究竟是什么?
【问题讨论】:
-
当您执行
function(name){}时,name指的是您提供的参数。for(var key in friends)也一样。您在此处定义 varkey,它在此循环的每次迭代中都会发生变化。此外,如果您使用对象数组而不是带有对象的对象,则此练习会更好。查一下javascript方括号[ ]和大括号{ }的区别 -
for (var key in friends) {可能是for (var friend in friends) {然后是friends[friend]- 他们选择将变量命名为key因为它是一个键 -name被传入并包含“Steve " -
name 是搜索函数的输入参数,您在调用搜索函数时传递该参数。 Key 是一个变量名,您使用它来迭代朋友对象
标签: javascript function object javascript-objects contact-list