Javascript 你能给我解释一下这段代码吗?(联系人名单)
我自己在学习JavaScript,我从阅读教程和书籍(比如Elountent)以及文章(比如Medium)开始。我也在做一些免费的课程,特别是两门:freeCodeCamp和CodeAcademy 今天我不得不面对一个关于CodeAcademy的联系人列表练习,我不确定我是否正确理解了它 经过一些提示,这是我最后的代码:Javascript 你能给我解释一下这段代码吗?(联系人名单),javascript,function,object,javascript-objects,contact-list,Javascript,Function,Object,Javascript Objects,Contact List,我自己在学习JavaScript,我从阅读教程和书籍(比如Elountent)以及文章(比如Medium)开始。我也在做一些免费的课程,特别是两门:freeCodeCamp和CodeAcademy 今天我不得不面对一个关于CodeAcademy的联系人列表练习,我不确定我是否正确理解了它 经过一些提示,这是我最后的代码: var-friends={ 法案:{ 名字:“比尔”, 姓:“盖茨”, 编号:“555555555”, 地址:[“一条Mistrosoft路”、“雷德蒙”、“华盛顿”、“98
var-friends={
法案:{
名字:“比尔”,
姓:“盖茨”,
编号:“555555555”,
地址:[“一条Mistrosoft路”、“雷德蒙”、“华盛顿”、“98052”]
},
史蒂夫:{
名字:“史蒂夫”,
姓氏:“乔布斯”,
编号:“333333333”,
地址:[“苹果街”、“硅谷”、“SV”、“87368”]
}
};
变量列表=函数(朋友){
for(在friends中为var firstName){
console.log(名字);
}
};
var search=函数(名称){
for(键入朋友){
如果(朋友[key].firstName==姓名){
console.log(朋友[key]);
返回朋友[键];
}
}
};
名单(朋友);
搜索(“史蒂夫”)代码>
.as控制台包装{最大高度:100%!重要;顶部:0;}
请参阅:
好的,你有一个var-friends,它是一个对象,包含每个“friends”,它们也是对象。var friends中的每个单独的friend对象都包含属性(名字、姓氏等)
这似乎就是你迷路的地方。好的,您创建搜索并将其设置为函数。在函数内部传递name,这里引用它friends[key]。firstname===name
。
[key]实际上引用了“friends”中的每个“friend”属性,因此bill就是一个键。所以它会查看这些键中的每一个(比尔、史蒂夫等),并将这些键的名字设置为name,这是之前通过的。因此,当您使用该功能时,search(“史蒂夫”)代码>它实际上将在对象列表中找到他,并返回“steve”拥有的所有属性,如名字地址等
总而言之。函数中传递的“name”只允许您搜索“friends”,而[key]将允许for循环搜索friends的所有键 在这个函数中:
var search = function(name) {
for (var key in friends) {
if (friends[key].firstName === name) {
console.log(friends[key]);
return friends[key];
}
}
};
变量key
在每次迭代中引用对象friends
的每个键,这意味着它的值在第一次迭代中为'bill',在第二次迭代中为'steve'
name
是此函数的一个参数search
,在像search('Steve')
那样执行函数之前,它没有实际值,请参见为其分配值'Steve'
因此,list(friends)
在控制台中打印'bill'和'steve',search('steve')
将打印此对象:
{
firstName: "Steve",
lastName: "Jobs",
number: "333 333 333",
address: ["Apple's street", "Silicon Valley", "SV", "87368"]
}
当您执行函数(名称){}
时,name
引用您给定的参数。同样适用于(在好友中键入var)
。在这里定义var键
,该键在该循环的每次迭代中都会更改。此外,如果使用对象数组而不是包含对象的对象,则此练习会更好。查找javascript方括号[]
和大括号{}
之间的差异(朋友中的var键){
可以是(朋友中的var朋友){
的
-他们选择为var键命名,因为它是一个键-名称被传入并包含“Steve”name是搜索函数的输入参数,您在调用搜索函数时会传递它。Key是一个变量名,您可以使用它来迭代friends对象谢谢!例如,如果我想使用其他术语而不是Key
和name
,它应该是相同的?现在它更有意义了。是的,您可以使用其他单词代替键
和名称
,它将以相同的方式工作。@Lewis
var search = function(name) {
for (var key in friends) {
if (friends[key].firstName === name) {
console.log(friends[key]);
return friends[key];
}
}
};
{
firstName: "Steve",
lastName: "Jobs",
number: "333 333 333",
address: ["Apple's street", "Silicon Valley", "SV", "87368"]
}