概念:
- 无序且唯一
- 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))
};
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!