Javascript.reduce()
我正在做freeCodeCamp JavaScript。我的问题是:基本算法脚本:将一个数字进行因式分解 以下是我编写的代码:Javascript.reduce(),javascript,arrays,function,Javascript,Arrays,Function,我正在做freeCodeCamp JavaScript。我的问题是:基本算法脚本:将一个数字进行因式分解 以下是我编写的代码: function factorialize(num) { let arr = []; let reducer = (accumulator, currentValue) => accumulator * currentValue; for (let i = 1; i < num + 1; i++) { let newArr = arr.p
function factorialize(num) {
let arr = [];
let reducer = (accumulator, currentValue) => accumulator * currentValue;
for (let i = 1; i < num + 1; i++) {
let newArr = arr.push(i);
}
return newArr.reduce(reducer);
}
factorialize(5);
函数因式分解(num){
设arr=[];
让减速器=(累加器,currentValue)=>累加器*currentValue;
for(设i=1;i
这是我的问题:控制台说:
ReferenceError:未定义newArr
为什么说没有定义newArr
?我确实给它下了定义!我对编码比较陌生,我真的很想学习。请帮帮我
newArr
Array.prototype.push
返回数组的长度let
声明变量,这会导致错误函数因式分解(num){
设arr=[];
让减速器=(累加器,currentValue)=>累加器*currentValue;
for(设i=1;i
您根本不需要newArr
Array.prototype.push
返回数组的长度
您无法在for语句中使用let
声明变量,这会导致错误
函数因式分解(num){
设arr=[];
让减速器=(累加器,currentValue)=>累加器*currentValue;
for(设i=1;i您可以简单地做到这一点
const factorialize=num=>Array(num).fill(1).reduce((a,u,i)=>a*++i)
console.log('5!->',因子化(5))
log('3!->',factorialize(3))
您可以简单地执行此操作
const factorialize=num=>Array(num).fill(1).reduce((a,u,i)=>a*++i)
console.log('5!->',因子化(5))
console.log('3!->',factorialize(3))
如果您想:
function factorialize(num) {
while (num > 1) {
return num * factorialize(num - 1);
}
return num;
}
如果您想:
function factorialize(num) {
while (num > 1) {
return num * factorialize(num - 1);
}
return num;
}
push(…)
不返回新数组,它返回数组的新长度。您应该只执行返回arr.reduce(reducer)
。旁注,let
使变量块具有作用域,因此即使push()
返回了您认为只有在for循环的代码块中才能访问的newArr
也会创建变量,但它只存在于for循环中,它是a)不断被覆盖的,b)存储新长度的arr
,因为这就是.push()
返回的内容。此外,您可以使用它:让arr=newarray(num).fill(0).map((元素,索引)=>index+1)
生成自然数数组。push(…)
不返回新数组,它返回数组的新长度。您应该只执行返回arr.reduce(reducer)
。旁注,let
使变量块具有作用域,因此即使push()
返回了您认为只有在for循环的代码块中才能访问的newArr
也会创建变量,但它只存在于for循环中,它是a)不断被覆盖的,b)存储新长度的arr
,因为这就是.push()
返回的内容。此外,您可以使用它:让arr=newarray(num).fill(0).map((元素,索引)=>index+1)
生成num
自然数数组。将“您无法获取变量”更改为“您无法获取let
”。将“您无法获取变量”更改为“您无法获取let
”。如果您想简明扼要,为什么不创建新数组(num)
,[num]
?@StackSlave这不是同一件事,第一个表示数组大小,第二个仅使用单个元素生成数组哦,是的。。。间隔。如果你想简明扼要,为什么不制作新数组(num)
,[num]
?@StackSlave这不是一回事,第一个表示数组大小,第二个只制作一个元素数组哦,是的。。。间隔开,谢谢!这是我关于stackOverflow的第一个问题。你们都帮了大忙!非常感谢。这是我关于stackOverflow的第一个问题。你们都帮了大忙!