【问题标题】:Why does this filter function set the indexes equal to one another?为什么此过滤器功能将索引设置为彼此相等?
【发布时间】:2020-03-18 03:32:55
【问题描述】:
const nonDuplicate = function(arr) {
    let filteredArr = arr.filter(function(item, index){
        if(arr.indexOf(item) === index)
            return item
    })
    console.log(filteredArr)
}
nonDuplicate([1, 2, 3, 1, 3, 4, 4, 5, 6])

有人可以告诉我为什么这在删除数组中的重复项方面有效吗?设置索引彼此相等有什么意义?

【问题讨论】:

  • 没有什么是相互平等的。 === 是一个相等测试。至于它为什么起作用:假设您有一个列表 [1,1,1,1,1],该列表中“1”的索引是什么?请记住,您只能得到一个答案,那么该列表中有多少元素会出现这种情况?
  • 学习调试console.log(arr.indexOf(item), index, arr.indexOf(item) === index)

标签: javascript arrays function


【解决方案1】:

设置索引彼此相等有什么意义?

我假设你指的是这一行:

        if(arr.indexOf(item) === index)

=== 运算符实际上是 strict equality 运算符。它实际上解析为布尔值...truefalse

打开 JavaScript 控制台并输入以下内容:

1 === 1

您会回复true。同样,如果您输入1 === 2,您将获得false

现在,对于实际代码,有indexOf function。这将返回数组中项目的索引,如果未找到,则返回 -1。因此,对于数组中的每个项目,他们检查该特定项目的 第一个索引 是否等于该特定项目的 索引。这个想法是,当循环到达该示例数组中的第二个1 时,indexOf 实际上将返回0,因为与值1 匹配的第一个索引是0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多