关于从另一个数组创建新的唯一值数组的帖子(Remove Duplicates from JavaScript Array)。
有问题的代码:
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"];
我在哪里:
我理解过滤器会在数组的每个成员上运行一个函数,而elem是被审查的元素,而pos是它的索引。如果某些东西导致该函数返回false,那么该元素将不会包含在新数组中。所以走过它,就会发生这种情况:
[重复所有元素。全部通过。]
基本上我不明白为什么第二个Nancy会评价为假。
答案 0 :(得分:1)
indexof是元素第一个外观的索引,因此第二个Nancy将获得第一个Nancy的索引,并将被过滤掉。
答案 1 :(得分:1)
6)myArray.indexOf(“Nancy”)与5相同吗?不(它是2,就像第3步一样),所以跳过重复的“Nancy”。
indexOf
为您提供第一次项目。