这阵子在看牛客网上看一些编程题,发现有一部分的编程题是需要读取用户输入,并输出结果的。在我开发前端以来,使用 JS 读取用户输入的内容好像从没用过。所以一开始的我一头雾水。网上有介绍说 Node 的方法 readline 可以逐行读取用户输入信息。于是便在此对 readline 方法进行总结
readline 使用
1 2 3 4 5 6 7 8 9 10 11 12
   |  const readline = require('readline')
  const rl = readline.createInterface({   input: process.stdin,    output: process.stdout,  })
  rl.on('line', function (input) {      console.log(`接收到:${input}`) })
 
  | 
 
用户输入的内容通过上述代码便可以获取到了。而在编程题中还需要得到输出,通常情况下 console.log()在控制台打印的结果也就是输出的结果。也就是说在上面的代码中 console.log()内放置你实现的函数代码。将用户输入作为参数传递就可以了。
这里贴上我实现的一道最小公倍数的数学题方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
   | const readline = require('readline')
  const rl = readline.createInterface({   input: process.stdin,   output: process.stdout, })
  rl.on('line', function (line) {   const nums = line.split(' ')   console.log(getMinNum(parseInt(nums[0]), parseInt(nums[1]))) })
 
 
 
 
 
 
 
  var getMinNum = function (num1, num2) {   let aIn = [],     bIn = [],     maxIn = 0,     maxNum = 0   for (let i = 1; i < Math.ceil(Math.sqrt(num1)); i++) {     if (num1 % i === 0) {       aIn.push(i)     }   }   for (let j = 1; j < Math.ceil(Math.sqrt(num2)); j++) {     if (num2 % j === 0) {       bIn.push(j)     }   }
    const length = Math.min(aIn.length, bIn.length)   for (let p = 0; p < length; p++) {     if (aIn[p] === bIn[p]) {       maxIn = aIn[p]     }   }   maxNum = (num1 / maxIn) * (num2 / maxIn) * maxIn   return maxNum }
  | 
 
在读取用户输入内容的过程中,程序不会停止,也就是在命令行里一直监听用户的输入。想要关闭监听用户的输入,可以使用 rl 的 close 方法:
rl.close()