这是一个具有经典 readline、一个循环和一个数组的工作解决方案:
(async () => {
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin , output: process.stdout });
const input = await new Promise(resolve => {
rl.question("Enter a number ", resolve)
})
for (var i = 1; i <= input; i++){
console.log(Array(i).fill('*').join(''))
}
})()
解释:
我们使用 readline 包来读取输入,我们使用 IIFE 来使用异步等待功能并等待用户输入,这要归功于 await 在输入变量中解析。
然后我们创建一个循环长度的数组,我们用星号填充并加入以创建到 console.log 的字符串。
这是另一种无需在每次迭代中创建数组的方法:
(async () => {
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin , output: process.stdout });
const input = await new Promise(resolve => {
rl.question("Enter a number ", resolve)
})
const arrayToFill = []
for (var i = 1; i <= input; i++){
arrayToFill[i] = '*'
console.log(arrayToFill.join(''))
}
})()
您也可以使用 String.prototype.padEnd 方法来完全不使用数组,这是一个示例:
(async () => {
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin , output: process.stdout });
const input = await new Promise(resolve => {
rl.question("Enter a number ", resolve)
})
for (var i = 1; i <= input; i++){
console.log(''.padEnd(i,'*'))
}
})()
希望有帮助!