首页 > 解决方案 > 如何删除数组中的所有重复元素(包括第一次出现)

问题描述

我在 CodeWars 中学习 JS,但没有找到删除数组中所有重复元素的方法。我需要这样做:

a = [1,2,2,2,3,4,5,6,6,7] b = [1,2,7,8,9]

返回一个唯一数组 = [3,4,5,8,9] 删除所有重复项,包括第一次出现

我怎样才能做到这一点?我已经使用了 for, if, forEach,但没有成功。

标签: javascriptarrays

解决方案


你可以简单地

  • 计算每个元素的出现次数(为了保留原始元素类型,您可以与合并数组Array.prototype.reduce()一起应用)Map
  • 然后,过滤掉那些被多次看到的:

const  a = [1,2,2,2,3,4,5,6,6,7],
       b = [1,2,7,8,9],
       
       uniques = [
         ...[...a, ...b]
          .reduce((acc,item) => 
            (acc.set(item, (acc.get(item)||0)+1), acc), new Map)
          .entries()
       ].reduce((acc, [key, value]) => 
        (value === 1 && acc.push(key), acc), [])
      
    
console.log(uniques)
.as-console-wrapper {min-height:100%}


推荐阅读