---
# System prepended metadata

title: \#349 Intersection of Two Arrays
tags: [leetcode, leetcode-easy]

---

# \#349 Intersection of Two Arrays
## *給定兩個整數陣列nums1/nums2, 回傳兩陣列的重複元素(元素必須唯一)*
## Log
 - build 20210703 by syhuang

## 參考解
 - 運用了Set + filter + 擴展運算符:
 - Set: 每個元素唯一
 - filter: 對陣列中每個元素進行運算, 只會回傳符合運算條件的元素
 - 擴展運算符(...): 把運算符後面接的物件, 把物件中的每個元素以逗號為區隔做展開
 - 速度最快(leetcode Runtime結果90%以上)
```javascript=
function intersection(nums1, nums2) {
    const set = new Set(nums1);
    return [...new Set(nums2.filter(n => set.has(n)))];
}
```
## 嘗試2
 - 用set只能存放唯一元素的特性,嘗試加快處理速度(leetcode Runtime結果約50%)
```javascript=
var intersection = function(nums1, nums2) {
    const s = new Set(nums1);
    let result = [];
    s.forEach(function(value,key,set){
        if(typeof(nums2.find(function(elm){return elm===value}))!='undefined')
            result.push(value);
    });
    return result;
};
```
## 初見
 - 用其中一個陣列為基準跑迴圈, 檢查每個元素是否存在另一陣列, 而且不存在result(回傳結果)
 - 速度較慢(leetcode Runtime結果10~20%)
```javascript=
var intersection = function(nums1, nums2) {
    let result = [];
    for(let i=0; i<nums1.length; i++){
        let elmMatch = function(elm){ return elm===nums1[i] }
        if(typeof(nums2.find(elmMatch))!='undefined'){
           if(typeof(result.find(elmMatch))=='undefined') result.push(nums1[i]) //回傳結果的元素必須唯一
        }
    }
    return result;
};
```
## 備註
## 參考
- [參考解](https://leetcode.com/problems/intersection-of-two-arrays/discuss/82187/JavaScript-solution-with-Set)
###### tags: `leetcode`, `leetcode-easy`