Javascript 如何通过递归使用reduce进行扩展

Javascript 如何通过递归使用reduce进行扩展,javascript,arrays,loops,Javascript,Arrays,Loops,这里是for循环方法,我想要的结果与下面的代码相同 功能减少(美元){ 设arr=[]; 让变化=[1000050002000000100,50,20,10,1]; 如果(美元===0)返回arr for(改变的关键){ if(key确保reduce处理程序始终返回数组,因为处理程序期望ar是一个数组。如果reduce处理程序中返回undefined,则该值将作为ar传递到下一个reduce迭代,这就是您得到错误的原因 此外,在返回代码之前,请确保定义了c,或按如下所示修改代码,以避免完全需要c

这里是for循环方法,我想要的结果与下面的代码相同
功能减少(美元){
设arr=[];
让变化=[1000050002000000100,50,20,10,1];
如果(美元===0)返回arr
for(改变的关键){

if(key确保reduce处理程序始终返回数组,因为处理程序期望
ar
是一个数组。如果reduce处理程序中返回
undefined
,则该值将作为
ar
传递到下一个reduce迭代,这就是您得到错误的原因

此外,在返回代码之前,请确保定义了
c
,或按如下所示修改代码,以避免完全需要
c

功能减少(美元){
让变化=[1000050002000000100,50,20,10,1];
/*如果美元===0,则返回[]*/
如果(美元===0)返回[];
/*返回减少的结果(即原始代码中的“c”)*/
返回更改。减少((ar,el)=>{
/*
当el从美元中扣除时产生正值,
*/
而(美元-el>=0){
/*
然后通过当前el和,
*/
美元-=el;
/*
将el添加到当前结果
*/
ar=ar.concat(el)
}
/*
返回结果ar数组
*/
返回ar;
}, [])
}
让[1,2,3]=[100209000,900];
控制台日志(减少(一个));
console.log(减少(两个));

console.log(reduce(three));
好的,你刚刚编辑了它,所以在这种情况下,我们应该在reduce中设置条件?我们不能使用spread来实现这一点?@ZumDummi刚刚根据我对你文章的理解更新了答案-这有帮助吗?对于输出2和3,与我不想要的不同,它应该是两个的“[5000,2000,2000]”和“[500,200,200]`为了three@ZumDummi如果你觉得这个答案有用的话,请考虑接受这个答案: