请解释下面的 JavaScript 代码,其中 returns 数组中未配对元素的值?

Please explain the below JavaScript code which returns the value of the unpaired element from the array?

下面是 returns 数组 [9, 3, 9, 7, 3, 9, 9] 中的值 7 的工作代码,因为 7 是没有相同对的值, 除了 7 之外的所有其他值在数组中都有相似的值对。

但是我没看懂这段代码,谁能逐行解释这段代码。请...

function check(array) {
        var s = new Set;
        
        array.forEach(v => s.delete(v) || s.add(v));
        
        return s.values().next().value;
    }
    
    console.log(check([9, 3, 9, 7, 3, 9, 9]));

一个集合只包含一个值一次,代码在数组元素中循环,并尝试从集合中删除该值,如果不存在,则将其添加到集合中,在集合完成元素在数组中只存在一次

这里它首先创建一个集合,然后,对于数组中的每个元素,它检查集合中是否存在,如果存在,则将其从集合中删除(因此,删除一对)

找不到就存储,等待下一对

此处模拟一个包含 5 个元素的数组

array = [1,3,3,2,1]

//first iteration
v = 1
set = [1]

//next iteration
v = 3
set = [1,3]

//next iteration
v = 3
set = [1] // the 3 was deleted

//next iteration
v = 2
set = [1,2]

//next iteration
v = 1
set = [2] // 1 was deleted

最后,它单独获取集合中的元素(或第一个)

所以带有数组 [4,4,4] 的 运行 将 return 4 因为最后一个元素没有对