繁体   English   中英

我无法理解 Array.prototype.filter() 中的“元素”参数

[英]I'm having trouble understanding the “element” parameter in Array.prototype.filter()

在过去的几个月里,我一直在通过 Codecademy 学习 JavaScript,现在我正在做一个信用卡验证器练习。

我在这一步的目标是迭代数组中的所有其他元素,并且我使用了以下代码来执行此操作,效果很好(由dannymac在另一篇文章中提供):

let checkDigits = array.filter((element, index) => {
    return index % 2 === 0
    })
  console.log(checkDigits)

问题是,即使我了解正在发生的事情,我也不知道“元素”参数的使用位置。 我已经检查了文档,但是由于我对此很陌生,所以我仍然看不到它。

我知道这可能看起来像一个愚蠢的问题,但如果有人能简要地向我解释一下,我将不胜感激。

非常感谢。

亲切的问候,维克。

您没有在您的情况下使用元素...您已实现的过滤器将 select 甚至与数组中的 position 有关的元素。

这是使用元素的示例:

const array = [4,12,15,9]
let checkDigits = array.filter((element, index) => {
    return element > 9
    })
  console.log(checkDigits)

/*
[12,15]
*/

在这种情况下,它没有被使用——它只是一个未使用的参数。

在不依赖内置函数的情况下很容易构建这种情况:只需定义一个 function ,它需要 2 个 arguments 并且只使用第二个:

 const fn = (arg1, arg2) => { console.log('arg2 is', arg2); }; fn('abc', 'def');

对于.filter ,它的 function 签名始终相同:传递给回调的第一个参数是被迭代的元素,传递给回调的第二个参数是迭代索引。 并非所有 arguments 都必须在 function 中引用; 一个 function 甚至可以定义一些 arguments 然后使用它们(尽管这很奇怪)。 在这里,由于您只能通过为第一个参数分配名称来获得对第二个参数的引用,因此该element必须列在参数列表中。

未使用参数的常见约定是给它一个下划线的名称,例如:

let checkDigits = array.filter((_, index) => {

这与您当前的代码一样有效,但(对某些人来说)可能看起来不那么令人困惑。

如果您有一个类似[1, 3, 4, 5, 6, 2, 4]的数组并且您对其运行filter ,它将遍历数组中的每个element并执行您提供的回调 function。 该回调 function 需要一些 arguments,第一个参数是元素,其134 ,第二个参数是从零开始并增加数组长度的索引 -1。 在您的代码示例中使用的回调 function 中,未使用该元素,因为它只关心每个项目的索引,但由于 arguments 仍然以相同的顺序出现,您必须添加元素作为第一个参数。

这里有些例子

 const arr = [1, 5, 6, 87, 2, 4, 7, 4, 6, 5] // get all the items that are divisible by 2 const filteredArr = arr.filter((element) => element % 2 == 0) console.log(filteredArr)

 const arr = [1, 5, 6, 87, 2, 4, 7, 4, 6, 5, 578, 23, 12, 1325, 78] // get all the items that are at an even index in the array and are greater than 10 const filteredArr = arr.filter((element, index) => index % 2 == 0 && element > 10) console.log(filteredArr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM