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])
有人可以引导我了解为什么这样做可以删除数组中的重复项吗?将索引设置为相等有什么意义?
将索引设置为相等有什么意义?
我假设您指的是这一行:
if(arr.indexOf(item) === index)
===
运算符实际上是strict equality运算符。它实际上解析为布尔值[true
或false
。
打开JavaScript控制台并输入以下内容:
1 === 1
您将获得true
。同样,如果输入1 === 2
,则会得到false
。
现在,对于实际代码,有indexOf
function。这将返回数组中该项的索引,如果找不到则返回indexOf
。因此,对于数组中的每个项目,他们都会检查该特定项目的first index是否等于该特定项目的index。这样的想法是,当循环到达该示例数组中的第二个-1
时,1
实际上将返回indexOf
,因为与值0
匹配的第一个索引为1
。