【问题标题】:I cannot understand how the filter method works in this function [duplicate]我不明白过滤方法在这个函数中是如何工作的[重复]
【发布时间】:2021-11-23 18:18:09
【问题描述】:

有一个功能旨在清除重复字符数组

let x = [55, 44, 55, 30, 30]
let unique = x.filter((e, i) => x.indexOf(e) === i )

console.log(unique)

filter的第一个值负责数组中当前处理的元素,第二个是当前处理的元素在数组中的索引,据我了解,在我们使用indexOf的函数中,我们比较两个相同数量的索引(indexOf (e) 和 i),但是如何 - 以这种方式过滤数组,我们仍然得到它,如何?

【问题讨论】:

  • 我不明白这个问题。你能用句子改写它吗?
  • Array#indexOf 返回找到的项目的最小索引。这意味着您将获得具有最小索引的项目 - 当然是按此顺序。

标签: javascript


【解决方案1】:

indexOf 文档说:

indexOf() 方法返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回 -1。

这是你将在执行中看到的:

e=55, i=0: indexOf(55) is 0 === 0: true!
e=44, i=1: indexOf(44) is 1 === 1: true!
e=55, i=2: indexOf(55) is 0 !== 2: false! 
e=30, i=3: indexOf(30) is 3 === 3: true!
e=30, i=4: indexOf(30) is 3 !== 4: false!

在删除第 2 项和第 4 项后,您的输出将仅包含 true 结果:

[55, 44, 30]

【讨论】:

    【解决方案2】:

    indexOf 始终返回您输入的首次出现的索引。这就是这个过滤器功能起作用的原因。

    在您的示例中,let x = [55, 44, 55, 30, 30]x.indexOf(55) 将产生 0。你明白为什么这会过滤掉任何其他出现的55吗?

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多