Open2

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

みんちゃんみんちゃん

https://leetcode.com/problems/find-the-difference-of-two-arrays/

leet コードでこの問題を解いてて気づいたこと、Set・Map の delete メソッドは boolean を返す
ちゃんと要素を削除できたら true を、削除できなかったら false を返す

delete メソッドのリターン値使うことほぼないし、なんとなく void だと思ってたけど違った

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete#return_value
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete#return_value

みんちゃんみんちゃん

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]]
};