如何解决请解释下面的 JavaScript 代码,它返回数组中未配对元素的值?
下面是从数组 [9,3,9,7,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,9]));
解决方法
Set 只包含一个值一次,代码在 Array 元素中循环,并尝试从存在的 Set 中删除该值,如果没有将其添加到 Set 中,则在 Set 完成时只存在元素一次在数组中
,这里首先创建一个集合,然后,对于数组中的每个元素,它检查集合中是否存在该元素,如果存在,则将其从集合中删除(因此,删除一对)
当它没有找到时,则存储,以等待下一对
这里有一个包含 5 个元素的数组的模拟
array = [1,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]
运行将返回 4
,因为最后一个元素没有对
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。