1.集合常用操作

  • 一种无序且唯一的数据结构
  • ES6中有集合,名为Set
  • 常用操作:去重,判断某元素是否在集合中,求交集 ```javascript // 去重 const arr = [1, 1, 2, 2]; const arr2 = […new Set(arr)];

// 判断元素是否在集合中 const set = new Set(arr); const has = set.has(3);

// 求交集 const set2 = new Set([2, 3]); const set3 = new Set([…set].filter(item => set2.has(item)));

  1. <a name="jvcFS"></a>
  2. # 2.前端与集合:使用ES6的Set
  3. - 使用Set对象:new、add、delete、has、size
  4. - 迭代Set:多种迭代方法、Set与Array互转、求交集、差集
  5. ```javascript
  6. let mySet = new Set();
  7. mySet.add(1);
  8. mySet.add(5);
  9. mySet.add(5);
  10. mySet.add('some text');
  11. let o = { a: 1, b: 2 };
  12. mySet.add(o);
  13. mySet.add({ a: 1, b: 2 });
  14. const has = mySet.has(o);
  15. mySet.delete(5);
  16. // mySet.keys 和mySet.values是一样的
  17. for(let [key, value] of mySet.entries()) console.log(key, value);
  18. // Set与Array互转
  19. const myArr = [...mySet]
  20. const myArr1 = Array.from(mySet);
  21. const mySet2 = new Set([1,2,3,4]);
  22. // 交集
  23. const intersection = new Set([...mySet].filter(x => mySet2.has(x)));
  24. // 差集
  25. const difference = new Set([...mySet].filter(x => !mySet2.has(x)));

题目

1.两个数组的交集

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

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

说明:

  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。
  1. /**
  2. * @param {number[]} nums1
  3. * @param {number[]} nums2
  4. * @return {number[]}
  5. */
  6. var intersection = function(nums1, nums2) {
  7. return [...new Set(nums1)].filter(item => {
  8. return nums2.includes(item)
  9. })
  10. };