请解释下面的 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
因为最后一个元素没有对
下面是 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
因为最后一个元素没有对