慕码人2483693
重复一个数字:const x = 3;Number(`${x}`.repeat(1)); //=> 3Number(`${x}`.repeat(2)); //=> 33Number(`${x}`.repeat(3)); //=> 333Number(`${x}`.repeat(4)); //=> 3333Number(`${x}`.repeat(5)); //=> 33333所以从这样的数组[3, 3, 3, 3, 3]我们可以做:[3, 3, 3, 3, 3].map((x, i) => Number(`${x}`.repeat(i+1)));//=> [3, 33, 333, 3333, 33333]但我们不需要手动用n 个相同的数字填充数组:const n = 5;const x = 3;Array(n).fill(x);//=> [3, 3, 3, 3, 3]或者:Array.from(Array(n), () => x);//=> [3, 3, 3, 3, 3]但显然,如果我们可以对每个项目应用一个函数,我们也可以生成完整的系列:Array.from(Array(n), (_, i) => Number(`${x}`.repeat(i+1)));//=> [3, 33, 333, 3333, 33333]最后我们可以将级数简化为所有数字的总和:[3, 33, 333, 3333, 33333].reduce((tot, x) => tot + x, 0);//=> 37035所以我们总共有:const n = 5; // use prompt() but don't forget to coerce the result into a numberconst x = 3;Array.from(Array(n), (_, i) => Number(`${x}`.repeat(i+1))) .reduce((tot, x) => tot + x, 0);如果您不需要生成一个系列,那么递归函数可能更简单:const sum_series = (x, n, tot=0) => n === 0 ? tot : sum_series(x, n-1, tot+=Number(`${x}`.repeat(n)))sum_series(3, 5);//=> 37035