关于从另一个数组创建新的唯一值数组的这篇文章(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"];
在那里我at:
I理解过滤器将在数组的每个成员上运行一个函数,并且elem是正在审查的元素,并且该pos是它的索引。如果某个东西导致该函数返回false,那么该元素将不会包含在新数组中。因此,通过它,发生这种情况:
- myArray.indexOf(“Mike”)是否与0相同?是的,所以将“Mike”添加到新阵列中。
- myArray.indexOf(“Matt”)与1相同吗?是的,所以添加“马特”到新阵列。
- myArray.indexOf(“Nancy”)与2相同吗?是的,所以将“Nancy”添加到新阵列中。
[重复所有元素。全部通过。]
基本上我不明白为什么第二南希会评估为假。
'indexOf'返回数组中第一个匹配元素的位置。当你处理第二个Nancy时,找到的位置与当前处理的索引不同,因此'false'。 –
检查我的答案在这里http://stackoverflow.com/questions/13945965/zeptos-use-of-array-filter/13946124#13946124 – elclanrs