我不明白这个功能。 [Codecademy联系人列表练习]

时间:2015-04-22 11:03:56

标签: javascript function

所以"对于朋友中的var x"循环将搜索朋友内的每个键,这将是bill和steve,然后是" friends [x] .firstName === name"我们正在检查名字是否等于" name",但程序如何知道" name"是史蒂夫还是比尔?我在这里遗漏了一些东西。

var friends = {
    bill: {
        firstName: "Bill",
        lastName: "Gates",
        number: " ",
        address: [' ', ' ', ' ',' ']
    },
    steve: {
        firstName: "Steve",
        lastName: "Jobs",
        number: " ",
        address: [' ', ' ', ' ',' ']
    }
};
var list = function(friends) {
    for (var x in friends) {
        console.log(x);
    }
};
var search = function(name) {
    for (var x in friends) {
        if(friends[x].firstName === name) {
            console.log(friends[x]);
            return friends[x];
        }
    }
};

2 个答案:

答案 0 :(得分:1)

for (var x in friends)

这会迭代朋友中的所有键,导致使用

进行两次循环迭代
x = "bill"
x = "steve"

然后在循环中与朋友[x]一起访问friends.bill和freinds.steve。 name变量作为搜索(name)的参数给出。这有效地搜索了dict朋友中的所有条目以获取firstName == name。

答案 1 :(得分:0)

这里我们将搜索定义为函数search,它接受​​参数name

var search = function(name)

我们使用像

这样的功能
search('Bill')

因此函数知道我们要查找的名称,即Bill。它会遍历每个项目,并将每个firstNameBill进行比较。当找到匹配时,它会返回相应的friends[x]

带参数的函数的优点是,使用相同的函数我们可以搜索任何名称。例如:search('Steve')search('Bill')

如果您不理解带参数的函数,请重新访问codeacademy部分understanding parameters - js