【问题标题】:I don't understand this function. [Codecademy Contact List excercise]我不明白这个功能。 【Codecademy 联系人列表练习】
【发布时间】:2015-04-22 11:03:55
【问题描述】:

所以“for var x in friends”循环将搜索朋友内部的每个键,即 bill 和 steve,然后使用“friends[x].firstName === name”我们检查第一个name 等于“name”,但程序如何知道“name”是 Steve 还是 Bill?我在这里遗漏了一些东西。

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

【问题讨论】:

  • 是搜索函数的参数。您必须自己确定价值,例如search('Steve').
  • 是的,我现在明白了,谢谢。

标签: javascript function


【解决方案1】:
for (var x in friends)

这会遍历朋友中的所有键,导致两次循环迭代

x = "bill"
x = "steve"

然后在循环中使用friends[x] 访问friends.bill 和freinds.steve。 name 变量作为参数提供给 search(name)。这有效地搜索 dict Friends 中的所有条目以查找 firstName == name。

【讨论】:

  • 好的,我不清楚的部分是 for 循环中的 if 语句。 if(friends[x].firstName === name) 我什么时候将“bill”和“steve”分配给name,以便计算机知道它是匹配的?直到那时我都明白我的想法。
【解决方案2】:

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

var search = function(name)

我们使用类似的函数

search('Bill')

所以该函数知道我们正在寻找哪个名称,即Bill。它将遍历每个项目并将每个firstName 与Bill 进行比较。当找到匹配项时,它会返回相应的 friends[x] 。

带参数函数的好处是,同一个函数,我们可以搜索任何名字。例如:search('Steve')、search('Bill')。


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

【讨论】:

  • 好的,所以我回去并根据您的链接进行了练习,但我仍然觉得我错过了一些难题。请与我裸露。你能解释一下我们使用函数“search('Bill')”的部分吗?
  • 我明白了,所以想到这个问题是我从未在练习中“使用”过该功能,这就是我感到困惑的原因。 Codecademy 给了我绿色的继续按钮,我没有真正搜索 bill 或 steve,只是我粘贴在这里的代码。我认为这就是这里的困惑。
  • @OfficerVimes 使用你定义的函数可能已经留给下一个练习了 :) 。但我希望你以后明白它是如何有用的。
猜你喜欢
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2013-10-22
  • 2023-02-02
  • 2015-04-26
  • 2015-12-21
相关资源
最近更新 更多