关于这篇关于从另一个数组创建唯一值的新数组的帖子(从 JavaScript 数组中删除重复项)。
有问题的代码:
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,则该元素将不会包含在新数组中。因此,通过它,会发生这种情况:
- myArray.indexOf("Mike") 和 0 一样吗?是的,所以将“Mike”添加到新数组中。
- myArray.indexOf("Matt") 是否与 1 相同?是的,所以将“Matt”添加到新数组中。
- myArray.indexOf("Nancy") 是否与 2 相同?是的,所以将“Nancy”添加到新数组中。
[对所有元素重复。全部通过。]
基本上我不明白为什么第二个南希会评估为假。