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

时间:2016-02-03 18:31:19

标签: javascript arrays function for-loop

我有一个名为findLCM的函数,它有两个参数(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]);
}

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

var findLCM = function(a,b) {
  ...
};

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

答案 2 :(得分:0)

试试这个递归函数

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);