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