【问题标题】:JavaScript: Remove all elements with duplicates in an array? [duplicate]JavaScript:删除数组中所有重复的元素? [复制]
【发布时间】:2019-03-23 17:19:27
【问题描述】:

我有一个数组a = [1, 2, 3, 4, 5, 1, 2, 3]

如何获得数组b = [4, 5]。如何删除所有重复的元素?

【问题讨论】:

  • 那么你尝试了什么?
  • @DanielBeck 不,不是骗子。该代码将返回 1,2,3,4,5
  • 啊,你是对的@epascarello,我的错。我认为 Crice 有更好的欺骗目标

标签: javascript arrays duplicates


【解决方案1】:

需要遍历它并查看它是否存在。最简单的方法是排序并查看其邻居。

var nums = [1, 2, 3, 4, 5, 1, 2, 3];

var noDupes = nums.slice().sort()  //sort it so numbers line up
  .reduce(function(result, c, i, arr){  //loop over the set
  if (c !== arr[i+1] && c !== arr[i-1]) { //see if number is before or after
    result.push(c) //if not, than add it
  }
  return result
}, [])

console.log(noDupes);


var noDupes2 = nums.slice().sort()  
  .filter((c, i, arr) => c !== arr[i+1] && c !== arr[i-1])

console.log(noDupes2);

另一种解决方案是查看索引而不进行排序

var nums = [1, 2, 3, 4, 5, 1, 2, 3];

var noDupes = nums.filter(( c, i, arr) => arr.indexOf(c) === arr.lastIndexOf(c))
console.log(noDupes)

【讨论】:

    【解决方案2】:

    通过过滤索引与最后一个索引不同的那些;

    a = [1, 2, 3, 4, 5, 1, 2, 3];
    //console.log(a);
    b = a.filter((value) => a.indexOf(value) == a.lastIndexOf(value));
    console.log(b)

    【讨论】:

    • 这与副本中接受的答案相同。
    • 没错,当这个问题被标记为欺骗时,我一定是在sn-p编辑模式下。我所做的快速欺骗搜索显示在那里留下了一个事件,类似于SQL DISTINCT。我应该删除答案还是将其留在这里?
    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 2017-03-21
    • 2016-12-08
    • 2018-10-29
    • 1970-01-01
    • 2013-05-20
    • 2020-02-12
    相关资源
    最近更新 更多