美文网首页Web 前端开发 让前端飞
【Javascript】寻找另一半

【Javascript】寻找另一半

作者: 雨水之后 | 来源:发表于2017-11-28 16:12 被阅读0次

    有一个能力数组[7,9,11,13,15],按照最佳组合值为20来计算,只有7+13和9+11两种组合。而7在数组的索引为0,13在数组的索引为3,9在数组的索引为1,11在数组的索引为2。

    所以我们说函数:pairwise([7,9,11,13,15],20) 的返回值应该是0+3+1+2的和,即6。

    function pairwise(arr, arg) {
    
      //把数组复制一个,在函数内使用
      var pairArr = arr.slice();
    
      //使用reduce方法去进行累加,并设定初始值为0用于返回结果
      return pairArr.reduce(function(acc,curValue,curIndex){
    
        //获取目标值与当前被测试值的差,便于在数组中寻找匹配
        var diff = arg - curValue;
    
        //如果数组中有差值,并且差值的index不是当前值的话
        if(pairArr.indexOf(diff)!=-1&&pairArr.indexOf(diff)!=curIndex){
    
          //把两个数的index相加
          var total = pairArr.indexOf(diff) + curIndex;
    
          //把以上步骤中刚被测试的两个数删除并替换为NaN,避免重复查询,也避免了index值发生混乱
          pairArr.splice(curIndex,1,NaN);
          pairArr.splice(pairArr.indexOf(diff),1,NaN);
    
          //计入累加器acc
          return acc + total;
        }
    
        //返回累加器中的值
        return acc;
    
      },0);
    
    }
    

    THE END.

    相关文章

      网友评论

        本文标题:【Javascript】寻找另一半

        本文链接:https://www.haomeiwen.com/subject/fxrebxtx.html