Javascript reduce函数后不工作?
我不太确定这里哪里出错了,希望通过将5转换为[1,2,3,4,5]的字符串,然后使用reduce将所有字符串相乘,从而将5(1*2*3*4*5=120)因子化。当我运行代码时,它只会给我[1,2,3,4,5]Javascript reduce函数后不工作?,javascript,arrays,function,reduce,Javascript,Arrays,Function,Reduce,我不太确定这里哪里出错了,希望通过将5转换为[1,2,3,4,5]的字符串,然后使用reduce将所有字符串相乘,从而将5(1*2*3*4*5=120)因子化。当我运行代码时,它只会给我[1,2,3,4,5] var arr = []; function factorialize(num) { for (var i = 1; i <= num; i++) { arr.push(i); } return arr; } var factors = 0; factors =
var arr = [];
function factorialize(num) {
for (var i = 1; i <= num; i++) {
arr.push(i);
}
return arr;
}
var factors = 0;
factors = arr.reduce(function(previousVal, currentVal) {
return previousVal * currentVal;
}, 0); // Expecting 120, instead result = [1,2,3,4,5]
factorialize(5);
var arr=[];
函数因子化(num){
对于(var i=1;iarr
为空,应首先为其提供因式分解的结果数组,并且应进行乘法,而不是加法,乘法时,起始值为1而不是0:
var arr=[];
函数因子化(num){
对于(var i=1;iarr
为空,应首先为其提供因式分解的结果数组,并且应进行乘法,而不是加法,乘法时,起始值为1而不是0:
var arr=[];
函数因子化(num){
对于(var i=1;i你可以先得到因子,然后乘以因子
我建议给函数命名,并将数组声明移到函数内部,因为函数返回这个数组
要获得产品,需要将这些值相乘,并使用1
作为中性起始值,以便从数字中获得产品
函数getFactors(num){
var i,arr=[];
对于(i=1;i你可以先得到因子,然后乘以因子
我建议给函数命名,并将数组声明移到函数内部,因为函数返回这个数组
要获得产品,需要将这些值相乘,并使用1
作为中性起始值,以便从数字中获得产品
函数getFactors(num){
var i,arr=[];
对于(i=1;ivar arr=[];
函数因子化(num){
对于(var i=1;ivar arr=[];
函数因子化(num){
对于(var i=1;i
- 将全局变量
arr
放入函数factorialize
中
- 获取返回的数组,然后执行函数
reduce
- 你需要乘法而不是加法
- 以initialValue=1启动reduce,这是为了避免
0*n
函数因式分解(num){
var-arr=[];
对于(var i=1;i
- 将全局变量
arr
放入函数factorialize
中
- 获取返回的数组,然后执行函数
reduce
- 你需要乘法而不是加法
- 以initialValue=1启动reduce,这是为了避免
0*n
函数因式分解(num){
var-arr=[];
对于(var i=1;i您没有调用factors
factorialize(5);
这样做您只是调用函数factorialize(num)
,它将为您提供数组(1…num)
(附加信息)并且在reduce中,您正在添加相乘的+
instard*
,因此也要更改它并
factors = arr.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;
}, 0);
^
|_ either initialize it to 1 or remove this.
请参阅下面的代码。我只是创建一个数组,然后在该数组上应用reduce
函数因式分解(num){
var-arr=[];
对于(var i=1;i您没有调用factors
factorialize(5);
这样做您只是调用函数factorialize(num)
,它将为您提供数组(1…num)
(附加信息)并且在reduce中,您正在添加相乘的+
instard*
,因此也要更改它并
factors = arr.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;
}, 0);
^
|_ either initialize it to 1 or remove this.
请参阅下面的代码。我只是创建一个数组,然后在该数组上应用reduce
函数因式分解(num){
var-arr=[];
对于(var i=1;i而言,问题在于初始值设置为0,而不是将数字相乘,而是将其相加
arr.reduce(回调,initValue)
arr=[1,2,3,4,5]
在提供的代码中,它以以下格式累积
arr.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;
}, 0);
第一次呼叫->0+1=1(因子=1)
第二次呼叫->0+2=2(因子=2)
第一次呼叫->0+3=3(因子=3)
第一次呼叫->0+4=4(因子=10)
第一次呼叫->0+5=5(因子=15)
要达到预期效果,请使用以下选项
var-arr=[];//初始化数组arr
函数因子化(num){
//for循环将1,2,3,4,5推送到arr阵列
对于(var i=1;i而言,问题在于初始值设置为0,而不是将数字相乘,而是将其相加
arr.reduce(回调,initValue)
arr=[1,2,3,4,5]
在提供的代码中,它以以下格式累积
arr.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;
}, 0);
第一次呼叫->0+1=1(因子=1)
第二次呼叫->0+2=2(因子=2)
第一次呼叫->0+3=3(因子=3)
第一次呼叫->0+4=4(因子=10)
第一次呼叫->0+5=5(因子=15)
要达到预期效果,请使用以下选项
var-arr=[];//初始化数组arr
函数因子化(num){
//for循环将1,2,3,4,5推送到arr阵列
对于(var i=1;i实际上,factors=0
,因为当你调用reduce时,arr
是空的。”。通过将5转换为[1,2,3,4,5]的字符串…“-我想你的意思是将它转换为-,这就是方括号([]
)之间许多逗号分隔值的数据类型A是一种不同的数据类型(引号之间的文本)。实际上,factors=0
,因为当你调用reduce时,arr
是空的。”。通过将5转换为[1,2,3,4,5]的字符串…“-我想你的意思是将它转换为-,这就是方括号([]
)被调用。A是一种不同的数据类型(引号之间的文本)。请对答案进行一些解释。请对答案进行一些解释。+1表示第一个答案是var arr=[];
进入函数。但是我建议将因子=
和产品=
行分开,并记录事实