【问题标题】:How does this snippet for removing duplicates from an array work这个从数组中删除重复项的代码片段如何工作
【发布时间】:2013-03-20 14:43:20
【问题描述】:

关于这篇关于从另一个数组创建唯一值的新数组的帖子 (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"];

我在哪里:

我知道 filter 将对数组的每个成员运行一个函数,并且 elem 是被审查的元素,而 pos 是它的索引。如果某些原因导致该函数返回 false,则该元素将不会包含在新数组中。因此,通过它,会发生这种情况:

  1. myArray.indexOf("Mike") 是否与 0 相同?是的,所以将“Mike”添加到新数组中。
  2. myArray.indexOf("Matt") 是否与 1 相同?是的,所以将“Matt”添加到新数组中。
  3. myArray.indexOf("Nancy") 是否与 2 相同?是的,所以将“Nancy”添加到新数组中。

[对所有元素重复。全部通过。]

基本上我不明白为什么第二个南希会评估为假。

【问题讨论】:

标签: javascript arrays


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    6) myArray.indexOf("Nancy") 是否与 5 相同?不(它是 2,就像第 3 步一样),所以跳过重复的“Nancy”。

    indexOf 为您提供项目的第一次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      相关资源
      最近更新 更多