Javascript 编写sum_pairs函数的更简单方法

Javascript 编写sum_pairs函数的更简单方法,javascript,Javascript,我希望有人告诉我一种更简单的方法来编写我的sum\u对(arr,sum)函数,它返回arr中的前两个值,这两个值相加形成sum。我的代码工作,但我认为它是复杂的,我需要有人来简化它。这是我的代码 function sum_pairs(ints,s){ let arr=[]; let arrOfIndex=[]; for(let i=0;i<ints.length;i++){ for(let a=0;a<ints.length;a++){ if(a!=i){ i

我希望有人告诉我一种更简单的方法来编写我的
sum\u对(arr,sum)
函数,它返回
arr
中的前两个值,这两个值相加形成
sum
。我的代码工作,但我认为它是复杂的,我需要有人来简化它。这是我的代码

function sum_pairs(ints,s){
 let arr=[];
 let arrOfIndex=[];
 for(let i=0;i<ints.length;i++){
  for(let a=0;a<ints.length;a++){
   if(a!=i){
    if(ints[i]+ints[a]==s){
     let newArr=[ints[i],ints[a]];
     let sumIndex=i+a;
     arr.push(newArr);
     arrOfIndex.push(sumIndex);
    }
   }
  } 
 }
 let sortedArray=arrOfIndex.sort((a,b)=>a-b);
 return arr[arrOfIndex.indexOf(sortedArray[0])];
}
函数和对(int,s){
设arr=[];
设arrOfIndex=[];

对于(设i=0;i),您可以对第二对元素使用一个带有哈希表的循环

它通过查找实际值来工作,如果找到,则该值是一对的一部分。在本例中,返回总和、值和值的增量

如果找不到,则向哈希表中添加一个新条目,其中包含用于获取和的缺少的值

继续,直到找到或结束

函数和对(int,s){
var hash=Object.create(null),
我
价值
对于(i=0;ilog(sum_对([7,2,5,8,4,3,7));
您可以使用以下代码

function sum_pairs(ints, s) {
  let results = [];
  for (let i=0; i<ints.length; i++) {
    for (let j=i+1; j<ints.length; j++) {
      if (ints[j] === s - ints[i]) {
        results.push([ints[i], ints[j]])
      }
    }
  }
  return results;
}
函数和对(int,s){
让结果=[];
对于(设i=0;i步数

  • 遍历数组
  • 通过使用以下等式求n的组成(n是每个迭代中的数字)
    n\u composition=sum-n
  • 在数组中搜索n_组合
  • 如果找到,则返回[n,n_comp]。如果没有找到,则继续循环。如果根本没有找到,则返回null
  • 设n=0;
    设n_comp=0;
    让sum_对=(arr,sum)=>{
    for(设i=0,len=arr.length;iconsole.log(sum_pairs([7,2,5,8,4,3],7))/[2,5]
    此代码将只写入一对元素,其总和等于所需值和列表中的所有对。@onkar.v,右,另一对可能是
    [4,3]
    。明白了,非常感谢。该函数只返回构成总和的第一对。是否需要所有对?如果需要,是否有重复的数字?非常感谢您的帮助我非常感谢您的努力,但该函数的编写目的是只返回构成总和的前两个值。我已对其进行了更新并修改以返回single结果。我在上面提到,我只需要第一对,我的代码只返回1对。
    function sum_pairs(ints, s) {
          let results = [];
          for (let i=0; i<ints.length; i++) {
            for (let j=i+1; j<ints.length; j++) {
              if (ints[j] === s - ints[i]) {
                results.push([ints[i], ints[j]])
                 return results;
              }
            }
          }
        }