前端演算法:給定兩個陣列,編寫一個函式來計算它們的交集(兩個陣列的交叉點)
阿新 • • 發佈:2018-12-23
給定兩個陣列,編寫一個函式來計算它們的交集。
例1:
輸入: nums1 = [1,2,2,1],nums2 = [2,2]
輸出:[2,2]
例2:
輸入: nums1 = [4,9,5],nums2 = [9,4,9,8,4]
輸出:[4,9]
注意:
結果中的每個元素應該出現在兩個陣列中顯示的次數。
結果可以是任何順序。
<script> var intersect = function(nums1, nums2) { var store = nums1.reduce(function(map, n) { // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce map[n] = (map[n] + 1) || 1; //記錄nums1某個值出現的次數(1、2、3) return map; }, {}); return nums2.filter(function(n) {// filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素 if (store[n]) { store[n]--;// 改變陣列的值相當於nums1[0] = nums1[0] - 1 return true; } else { return false; } }); }; var nums1 = [4,9,5,7,7,7],nums2 = [9,4,9,5,8,7,7,7]; console.log(intersect(nums1,nums2)); </script>