Javascript 数字数组和数字k,返回数组中的任意两个数字加起来是否等于k

Javascript 数字数组和数字k,返回数组中的任意两个数字加起来是否等于k,javascript,Javascript,我有点困惑这个函数是如何工作的hashMap[k-值]用k在arr中推导2个整数之和的位的精确程度如何?您应该从else块开始读取,然后从if块开始读取 hashMap[k-value]=true所做的是使用数组的当前项value跟踪需要到达k的数字 例如,如果k是11并且当前项值是7,那么hashMap将变成{4:true},这意味着我们正在寻找4(因为7+4==11)。如果下一个值是3,则hashMap变为{4:true,“8:true},这意味着此时我们正在寻找4或8 现在,我们回到if块

我有点困惑这个函数是如何工作的
hashMap[k-值]
用k在
arr
中推导2个整数之和的位的精确程度如何?

您应该从
else
块开始读取,然后从
if
块开始读取

hashMap[k-value]=true
所做的是使用数组的当前项
value
跟踪需要到达
k
的数字

例如,如果
k
11
并且当前项
值是
7
,那么
hashMap
将变成
{4:true}
,这意味着我们正在寻找
4
(因为
7+4==11
)。如果下一个
3
,则
hashMap
变为
{4:true,“8:true}
,这意味着此时我们正在寻找
4
8


现在,我们回到
if
块,该块只检查当前
值是否是我们要查找的数字之一(上例中的
4
8
)。如果是这样,我们立即返回
true
,因为我们已经找到了两个加起来等于
k
的数字,所以不需要继续搜索。请注意,对于循环的第一次迭代,无论如何都不能输入这个
if
块,因为
hashMap
仍然是一个空的
{}

,作为一个建议,对于这个和任何其他您可能难以理解的相对较小、简单的代码位,请尝试使用示例输入一次运行一行。这通常会向您展示事情是如何工作的——我认为这会帮助您理解,比任何书面解释都要好。感谢您的建议,但我仔细阅读了它,它仍然模糊不清,请在开发工具中亲自尝试。我在每条语句上设置了一个断点。对于数组上的每次迭代(假设之前没有遇到该值,这是第一次迭代的情况),此代码将从
k
中减去数组值,并将结果值标记为
true
。然后,如果循环随后遇到该结果值,
if
检查
hashMap[value]
将返回
true
,并且算法知道数组中有一个值,当前迭代的值可以与该值组合以生成
k
findSums(arr, k) {
   let hashMap
   hashMap = {};
   for (let value of arr) {
      if (hashMap[value]) {
         return true;
      } else {
         hashMap[k - value] = true
      };
   }
   return false;
}