Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript reduce函数后不工作?_Javascript_Arrays_Function_Reduce - Fatal编程技术网

Javascript reduce函数后不工作?

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 =

我不太确定这里哪里出错了,希望通过将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 = 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;i
arr
为空,应首先为其提供因式分解的结果数组,并且应进行乘法,而不是加法,乘法时,起始值为1而不是0:

var arr=[];
函数因子化(num){

对于(var i=1;i
arr
为空,应首先为其提供因式分解的结果数组,并且应进行乘法,而不是加法,乘法时,起始值为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;i
var arr=[];
函数因子化(num){
对于(var i=1;i
var 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=[];
进入函数。但是我建议将
因子=
产品=
行分开,并记录
事实