如何在递归函数中共享返回值
How can I share a return value in recursive function?
在常规函数中,我可以在每次迭代中使用相同的结果数组:
_.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;
};
使用这个,我得到了错误的输出。我可以使用内部助手函数来完成此操作,但我不喜欢。
必须将结果传递给另一个函数,以便被调用的函数知道该项是否唯一。在下面的代码示例中,传递的唯一项数组的名称为p_result
。
这是一个工作代码示例:
_.unique = function(array, p_result) {
if(!(Object.prototype.toString.call(p_result) == '[object Array]')) p_result = [];
var result = p_result;
if(array.length === 0) return result;
if(p_result.indexOf(array[0]) < 0) {
result.push(array[0]);
}
return _.unique(array.slice(1), result);
};
// e.g. _.unique([0, 1, 1, 2, 3, 7, 4]) gives [0, 1, 2, 3, 7, 4]
使用以上代码的fiddle示例
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从嵌套的API函数返回值
- 如何在递归函数中共享返回值
- select2 - 如果多个选项共享一个值,则返回不正确的选定选项