为什么这个过滤器函数将索引设置为彼此相等?

问题描述 投票:0回答:1
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])

有人可以引导我了解为什么这样做可以删除数组中的重复项吗?将索引设置为相等有什么意义?

javascript arrays function
1个回答
0
投票

将索引设置为相等有什么意义?

我假设您指的是这一行:

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

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

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

1 === 1

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

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

© www.soinside.com 2019 - 2024. All rights reserved.