Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你能给我解释一下这段代码吗?(联系人名单)_Javascript_Function_Object_Javascript Objects_Contact List - Fatal编程技术网

Javascript 你能给我解释一下这段代码吗?(联系人名单)

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

我自己在学习JavaScript,我从阅读教程和书籍(比如Elountent)以及文章(比如Medium)开始。我也在做一些免费的课程,特别是两门:freeCodeCamp和CodeAcademy

今天我不得不面对一个关于CodeAcademy的联系人列表练习,我不确定我是否正确理解了它

经过一些提示,这是我最后的代码:

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"]
}