gpt4 book ai didi

javascript - _ 在这个过滤器回调中是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:01 25 4
gpt4 key购买 nike

我正在努力处理以下代码,该代码过滤包含重复项的数组但保留非重复项。

temp = temp.filter((a, _, aa) => aa.indexOf(a) === aa.lastIndexOf(a));

我在文档中看到的是 Array.prototype.filter 采用带有元素、索引和数组的回调函数。

我不明白的是传递的参数:(a, _, aa)_ 是用作占位符还是代表其他内容?

最佳答案

参数列表中的下划线只是作为占位符传递。它通常用于表示一个被丢弃且从未使用过但需要作为占位符存在的参数。本质上是一个“虚拟”变量。1

在这种情况下,Array.prototype.filter 接受一个带有三个参数的回调。由于代码的作者想要访问正在调用 filter 的数组但不关心索引,因此他们必须提供第二个参数,尽管如此才能使用第三个数组参数。请注意,_ 与任何其他变量一样,您仍然可以使用它对变量执行任何操作。它只是被普遍用作一次性变量。

如果您需要代码的解释,它只是遍历数组并检查当前元素的索引。如果 a(正在处理的当前元素)在 aa(正在调用数组 filter)中的索引是元素出现的最后一个索引。如果是,则意味着该元素不会出现在数组中的任何其他位置,从而过滤掉重复元素。


“常用”是指许多语言都采用了这种做法。在 Python 等语言中,它是众所周知的标准。 SQL、Haskell 和 Scala 等其他语言使用此方法(尽管 Haskell 作为一种模式)。

关于javascript - _ 在这个过滤器回调中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com