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,那么该元素将不包括在新数组中。因此,通过它,会发生以下情况:
基本上我不明白为什么第二个Nancy会计算为false。indexof是元素第一次出现的索引,所以第二个Nancy会得到第一个Nancy的索引,并且会被过滤掉。6)是myArray。indexof(“Nancy”)与5相同吗?没有(是2,就像第3步一样),所以跳过重复的“Nancy”
indexOf
提供该项的第一个匹配项。indexOf
返回数组中第一个匹配元素的位置。处理第二个索引时,找到的位置与当前处理的索引不同,因此false
。请在此处检查我的答案