JavaScript 如何将函数结果与数组中的值一起传递到同一个函数中

javascript how to pass function results into the same function along with a value from array

本文关键字:函数 同一个 一起 数组 结果 JavaScript      更新时间:2023-09-26

我有一个名为findLCM的函数,它需要2个参数(a,b)。

我还有一个数组,其中包含未知数量的元素(所有数字)。为了解释,我们说:

var values = [c, d, e, f]

现在我需要构建的是这个:

var result = findLCM(findLCM(findLCM(c,d),e),f);

我试图编写一个可以做到这一点的 for 循环,但卡住了,无法弄清楚。有人可以指出正确的方法吗?

到目前为止我的代码:

var result = 0;    
for(f = 0; f < values.length -2; f++) {
  result *= findLCM(findLCM(values[f], values[f+1]),values[f+2]);
}

听起来像是使用 Array.prototype.reduce() 的好例子:

var values = [c, d, e, f];
var lcm = values.reduce(function(previous, currentValue, currentIndex, arr) {
    return findLCM(previous, currentValue);
});
alert(lcm);

我认为您正在寻找的是使用reduce。

var findLCM = function(a,b) {
  ...
};
var result = [a, b, c, d, e].reduce(findLCM);

试试这个递归函数

function findLCMArray (arr)
{
  if ( arr.length > 2 )
  {
     return findLCM( arr.shift() , findLCMArray (arr) );
  }
  else
  {
     return findLCM( arr.shift(), arr.shift() );
  }
  function findLCM( x, y )
  {
    //logic to do LCM
  }
}

或者你可以像这样循环

var arr = [2,4,6,8];
var lcmValue = arr[0];
arr.forEach ( function(value){
  lcmValue = findLCM( lcmValue, value);
} );
alert(lcmValue);
相关文章: