“金字塔”的字母

“金字塔”的字母

问题描述:

“金字塔”的字母

var z = []; 
 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
 
console.log(z.join("\n")+"\n"+"a".repeat(7)+z.reverse().splice(0,1).join("\n"));

我做了,做了的字母“金字塔”的代码,这应该是这样的:

a 
aa 
aaa 
aaaa 
aaaaa 
aaaaaa 
aaaaaaa 
aaaaaa 
aaaaa 
aaaa 
aaa 
aa 
a 

,但它给人的这样的输出:

a 
aa 
aaa 
aaaa 
aaaaa 
aaaaaa 
aaaaaaaaaaaaa 

代码在这里:

var z = []; 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
console.log(z.join("\n")+"\n"+"a".repeat(7)+z.reverse().splice(0,1).join("\n")); 

如何使代码按预期方式工作?

P.S.我不需要单独输出,因为我不使用console.log方法,而是使用API​​方法message.send

+1

而你的问题是什么? –

+0

@FelixKling“做我的作业” – xShirase

+0

问题是'如何使代码按预期工作?' –

有趣的方式,使用modulos,与任何尺寸可用。

var len = 7; 
 
var z = []; 
 
for(var i = 0; i < 2*len; i++) 
 
    if(i<len) 
 
    z.push("a".repeat(i%len+1)); 
 
    else if (i>len) 
 
    z.push("a".repeat(len-i%len)) 
 
console.log(z.join("\n"));

您需要中心线后添加\n,你需要删除的拼接。

var z = []; 
 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
 
console.log(
 
    z.join("\n")+"\n"+ 
 
    "a".repeat(7)+'\n'+ 
 
    z.reverse().join("\n") 
 
);

+0

谢谢合作 –

这种方式是可能的:

var z = []; 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
for(var i = 7; i > 0; i--) z.push("a".repeat(i)); 
console.log(z.join("\n")); 

或:

var z = []; 
for(var i = -7; i < 7; i++) z.push("a".repeat(7-Math.abs(i))); 
console.log(z.join("\n")); 

也尝试这种非常快速的实现:

console.log('a\naa\naaa\naaaa\naaaaa\naaaaaa\naaaaaaa\naaaaaa\naaaaa\naaaa\naaa\naa\na'); 
+0

恭喜,你赢了:) https://jsperf.com/pyramid-of-letters – xShirase

const fn = (ch, len) => { 
 
    let head = footer = ''; 
 
    Array(...Array(len).keys()).forEach((e, i) => { 
 
    head += ch.repeat(i + 1) + `\n`; 
 
    if(i !== 0) 
 
     footer += ch.repeat(len - i) + `\n`; 
 
    }); 
 
    return head + footer; 
 
}; 
 

 
document.querySelector('pre').innerHTML = fn('a', 7);
<pre></pre>

使用Array#from创建长度11的阵列为了在回调每个k与String#repeata数到阵列。加入使用\n数组:

const result = Array.from({ length: 11 }, (v, k) => 'a'.repeat(k < 6 ? k + 1 : 11 - k)).join('\n'); 
 

 
console.log(result);