如何使用自定义函数操作数组

时间:2015-08-19 16:21:34

标签: javascript arrays

所以我有一个数组,每个数组包含一个特定的函数。

var randomly = [
  function(a) { return a * a - a; },
  function(a) { return (a - 2) * (a - 1) * (a - 1); },
  function(a) { return a * a + a; },
  function(a) { return a % 3; }
];

我正在创建一个函数,它接受整个数组的输入值(a)并单独遍历每个数组单元,从而解决了这个问题。但是,该函数的结果成为下一个函数的输入值。所以初始输入值只对第一个函数有用,下一个函数的输入值将是前一个函数的结果。

为此,我创建了一个for循环......

var theFunction = function (input, queue){

  for (var i = 0; i < queue.length; i++){
    queue[i](input);


  }

所以,这就是我被困的地方......

如何调用特定数组和输入值?我使用queue[i](input);但不确定这是否有效。对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

你很接近,但为了“链接”这些功能,你需要实际存储返回值,这样你就可以重复使用它们了:

var theFunction = function (input, queue) {
  var result = input;

  for (var i = 0; i < queue.length; i++)
    result = queue[i](result);

  return result;
}

var randomly = [
  function(a) { return a * a - a; },
  function(a) { return (a - 2) * (a - 1) * (a - 1); },
  function(a) { return a * a + a; },
  function(a) { return a % 3; }
];

var theFunction = function (input, queue) {
  var result = input;

  for (var i = 0; i < queue.length; i++)
    result = queue[i](result);

  return result;
}
  
  
console.log(theFunction(4, randomly));