Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此筛选函数将索引设置为彼此相等?_Javascript_Arrays_Function - Fatal编程技术网

Javascript 为什么此筛选函数将索引设置为彼此相等?

Javascript 为什么此筛选函数将索引设置为彼此相等?,javascript,arrays,function,Javascript,Arrays,Function,有人能告诉我为什么在删除阵列中的重复项时可以这样做吗?将索引设置为彼此相等有什么意义 将索引设置为彼此相等有什么意义 我想你指的是这一行: const nonDuplicate = function(arr) { let filteredArr = arr.filter(function(item, index){ if(arr.indexOf(item) === index) return item }) console.log(

有人能告诉我为什么在删除阵列中的重复项时可以这样做吗?将索引设置为彼此相等有什么意义

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

我想你指的是这一行:

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控制台并输入以下内容:

        if(arr.indexOf(item) === index)
您将返回
true
。同样,如果您输入
1==2
,您将得到
false


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

没有任何索引被设置为彼此相等<代码>=是一种平等测试。至于它为什么起作用:假设你有一个列表[1,1,1,1,1],列表中“1”的索引是什么?请记住,您只能得到一个答案,那么对于该列表中的多少元素,将是这种情况?学习调试
console.log(arr.indexOf(item),index,arr.indexOf(item)==index)
1 === 1