使用javascript中的map函数构建一个星形金字塔

使用javascript中的map函数构建一个星形金字塔,javascript,Javascript,我已经编写了一个简单的javascript代码来使用for循环打印星星金字塔。是否可以使用map函数以简化的方式编写代码?请建议 //构建给定高度的“星星金字塔”的程序 const buildPyramid=(高度)=>{ //以金字塔格式显示星星的代码 设initialStapce=高度; 让starCount=1; 让结果=“”; 对于(让line=1;line您可以使用map,是的,但我认为基于索引的字符串是更大的挑战。当您map时,跟踪索引并相应地在左右两侧填充星星: 函数金字塔(h

我已经编写了一个简单的javascript代码来使用for循环打印星星金字塔。是否可以使用map函数以简化的方式编写代码?请建议

//构建给定高度的“星星金字塔”的程序
const buildPyramid=(高度)=>{
//以金字塔格式显示星星的代码
设initialStapce=高度;
让starCount=1;
让结果=“”;

对于(让line=1;line您可以使用
map
,是的,但我认为基于索引的字符串是更大的挑战。当您
map
时,跟踪索引并相应地在左右两侧填充星星:

函数金字塔(h){
返回数组(h).fill('*'))
.map((s,i)=>
''重复(h-i-1)+
s、 重复(i+1)。拆分(“”)。合并(“”)+
''重复(h-i-1))
.join('\n');
}
控制台日志(金字塔(3));
控制台日志(金字塔(4));

log(pyramid(5));
这个问题可能有很多解决方案。 我们可以用for循环,while循环,甚至递归函数来解决这个问题

使用递归函数的解决方案:

这基本上将每一行视为一个字符串来运行函数,直到
row==n

函数金字塔(n,行=0,str=''){ 如果(行===n){ 回来 } 如果(str.length==(n*2)-1){ console.log(str); 金字塔(n,第+1行) 回来 } 常数中点=数学楼层((n*2)-1)/2) 让我们加上; 如果(中点-行=str.length){ add='*' }否则{ 添加=“” } 金字塔(n,行,str+add) } 金字塔(5)