Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

Javascript 这个用于从数组中删除重复项的代码段是如何工作的

Javascript 这个用于从数组中删除重复项的代码段是如何工作的,javascript,arrays,Javascript,Arrays,关于这篇文章()关于从另一个数组创建唯一值的新数组 有关守则: uniqueArray = myArray.filter(function(elem, pos) { return myArray.indexOf(elem) == pos; }) 将其用作测试数据: var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"]; 所需结果是一个仅具有唯一值的数组: var unique_names = ["Mike"

关于这篇文章()关于从另一个数组创建唯一值的新数组

有关守则:

uniqueArray = myArray.filter(function(elem, pos) {
    return myArray.indexOf(elem) == pos;
})
将其用作测试数据:

var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
所需结果是一个仅具有唯一值的数组:

var unique_names = ["Mike","Matt","Nancy","Adam","Jenny","Carl"];
我现在的位置:

我知道filter将在数组的每个成员上运行一个函数,elem是被检查的元素,pos是它的索引。如果某个原因导致该函数返回false,那么该元素将不包括在新数组中。因此,通过它,会发生以下情况:

  • myArray.indexOf(“Mike”)与0相同吗?是的,所以在新数组中添加“Mike”
  • myArray.indexOf(“Matt”)与1相同吗?是的,所以在新阵列中添加“Matt”
  • myArray.indexOf(“Nancy”)与2相同吗?是的,所以在新数组中添加“Nancy”
  • [对所有元素重复。全部通过。]


    基本上我不明白为什么第二个Nancy会计算为false。

    indexof是元素第一次出现的索引,所以第二个Nancy会得到第一个Nancy的索引,并且会被过滤掉。

    6)是myArray。indexof(“Nancy”)与5相同吗?没有(是2,就像第3步一样),所以跳过重复的“Nancy”


    indexOf
    提供该项的第一个匹配项。

    indexOf
    返回数组中第一个匹配元素的位置。处理第二个索引时,找到的位置与当前处理的索引不同,因此
    false
    。请在此处检查我的答案