Open2
Javascript で Set・Map の delete メソッドは void ではない

leet コードでこの問題を解いてて気づいたこと、Set・Map の delete
メソッドは boolean を返す
ちゃんと要素を削除できたら true
を、削除できなかったら false
を返す
delete
メソッドのリターン値使うことほぼないし、なんとなく void だと思ってたけど違った

leetcode の問題は与えられた2つの配列から重複要素を削除した配列を返す関数を作成すること
↓問題例
Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]
Input: nums1 = [1,2,3,3], nums2 = [1,1,2,2]
Output: [[3],[]]
.delete
メソッドのリターン値を使うと以下のようにスマートに実装できる
function findDifference(nums1: number[], nums2: number[]): number[][] {
const [nums1Set, nums2Set] = [new Set(nums1), new Set(nums2)]
return [[...nums1Set].filter(num => !nums2Set.delete(num)), [...nums2Set]]
};