如何在递归函数中共享返回值?

时间:2016-04-01 06:32:16

标签: javascript recursion

在常规函数中,我可以在每次迭代中使用相同的结果数组:

_.unique = function(array) {
  var result = [];

  for (var i = 0; i < array.length; i++) {
    if (result.indexOf(array[i]) < 0) {
      result.push(array[i]);
    }
  }

  return result;
};

使用递归函数时,如何做同样的事情(并继续推送到我的结果数组)?

_.unique = function(array) {

  var result = [];


  if (array.length === 0) {
    return result;
  } else {
    if (result.indexOf(array[0]) < 0) {
      result.push(array[0]);
    }
    return _.unique(array.slice(1));
  }

  return result;

};

使用这个,我得到了错误的输出。我可以使用内部帮助函数来做到这一点,但我不愿意。

1 个答案:

答案 0 :(得分:1)

您必须将结果传递给另一个函数,以便被调用函数知道该项是否唯一。在以下代码示例中,使用名称pgbouncer传递唯一项数组。

这是一个有效的代码示例:

p_result

Example fiddle that uses the code above