前端常见数据结构与算法整理--集合

452 阅读1分钟

概念:

  1. 无序且唯一
  2. es6中有集合,Set

集合常用操作:

去重

const arr1 = [1,1,2,2]

const arr2 = [...new Set(arr1)]

查询是否为集合中元素

const set = new Set(arr1)

const isHas = set.has(1)
//has方法查询集合内是否有某个元素,返回一个布尔值

求两个集合的交集:

集合本身并不带有求交集的方法,需要将其转换为数组,然后调用数组的filter方法,筛选结束后转回set

const set2 = new Set([2,3,4])

const res = new Set([...set].filter(item => set2.has(item)))

set添加数据:

  • add()方法增加(添加相同数据无效,但可以添加两个看似一样的对象到set中,因为两个对象虽然内容相同但内存地址不同)
  • delete()方法删除
  • .size属性获得set的大小
set2.add(5)
set2.delete(5)
console.log(set2.size)

遍历集合

for(let item of set2) console.log(item)

leetcode算法题:

T349 两个数组去重

给定两个数组,编写一个函数来计算它们的交集。

  • 示例 1:
  • 输入:nums1 = [1,2,2,1], nums2 = [2,2]
  • 输出:[2]
  • 示例 2:
  • 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  • 输出:[9,4]
  •  
  • 说明:
  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/in… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
利用set对一个数组进行去重,然后通过filter方法过滤数组即可

var intersection = function(nums1, nums2) {
    return [...new Set(nums1)].filter( item => nums2.includes(item))
};