欢迎回来｡
让我们来谈谈过滤器｡
现在, 根据名字, 你应该猜到它是做什么的｡
它为我们过滤东西｡
所以使用map, 我们总是得到相同数量的项目, 对吗？
我们有三个项目, 我们得到了三个项目回来｡
我们只是把每一个项目都映射了一下｡
有了过滤器, 我们有时会收到比我们给它的少｡
我们正在筛选一些结果｡
所以让我们创建一个新的函数, 而不是乘以2｡
我想创建一个函数｡
这个函数, 我们要对这些项做什么？
比如说, 如果物品是奇数, 请勾选｡
所以我们要问, 这些数是奇数吗, 然后只返回奇数.
所以检查｡
奇数将收到一件物品｡
这个项目将被付诸行动｡
再一次, 我们必须归还一些东西｡
我们要还什么？
过滤器函数会尝试接收一个真值和假值或者一个布尔值, 不管它是否应该被过滤｡
所以如果我们想检查一个数是否为奇数, 我们可以说, item modulo 2, 因为modulo
2是要把这个数除以2｡
如果它等于零, 那么它是偶数｡
好吧, 我知道了
所以我可以说它不等于零｡
所以如果余数不等于零, 它就是奇数｡
我们只需要简单地返回这个｡
同样, 这将被评估为一个欺凌表达式, 基于欺凌表达式, 过滤器将说,
如果它是真的, 我将把它保留在列表中｡
如果不是, 我将删除它或不将其添加到新列表中｡
让我们来看看这个, 而不是地图, 让我们来做过滤, 这里我们来做检查｡
奇怪｡
或者｡
你知道吗？
我不喜欢这个名字｡
咱们干吧｡
只是有些奇怪｡
就像这样
如果我运行这个｡
你看那个｡
我已经过滤并移除了试管, 因为这是偶数｡
再来一次｡
注意这里我没有调用函数因为filter接受一个函数或者我们称之为函数签名.
嘿, 只要告诉我在哪里可以找到我应该去的内存空间, 以便采取什么行动｡
它会说, 嘿, 给予我数据, 我会对每一项运行这个函数｡
所以当我们到1的时候, 它会运行这个函数, 参数是1｡
一除以二｡
这肯定不会给予我们一个零余数｡
所以它会返回｡
是的｡
这意味着我会把它添加到我们创建的新列表中, 当我们得到2的时候, 因为它会返回false｡
它不会将其添加到列表中｡
同样, 假设我们有一个用户列表｡
在这种情况下, 我们可能希望基于用户进行过滤, 从名称A开始｡
我们可以使用filter函数来过滤所有的用户名｡
并且只有一个新的用户名列表, 其中的用户名以字母开头｡
另一个非常有用的功能｡
如你所见, 我们保持一切纯洁｡
它为我们创建了一个新列表｡
它不会修改原始列表｡
所以我们要记住这个功能范例｡
再一次, 地图和过滤器的美妙之处在于函数变得多么简单｡
一切都很好, 很简单, 提醒你一下, 它们可能会变得更复杂一点｡
但我们只需要知道, 嘿, 我应该对物品做什么, 我应该归还什么？
这是他们唯一关心的事情｡
而不是拥有这些巨大的, 巨大的功能, 试图做一切｡
好吧, 我会的
接下来我们来谈谈zip｡