公司组织编程比赛时,想着先去公司内容code平台上刷些算法题提升下,待选择回答语言为javascript时,发现没办法获取输入参数(肯定比不上leetcode,它会直接把入参放到函数里)。所以就只能另外想办法看如何读取输入内容,这是发现nodejs有个插件readline是真的好用,有兴趣的同学可以去看官网介绍。
readline用法说明
用法非常简单,示例说明如下:
//第1步:引入readline模块
const readline = require('readline');
//第2步:创建接口实例
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
/**
* 第3步:获取每行输入流
* 每当输入流接收到行尾输入(\n、\r或\r\n)时,就会发出“line”事件。
**/
rl.on('line', (input) => {
console.log(`用户输入的一行内容: ${input}`);
/**
* tips:这里的input是string类型的,需自行解析数据
* 比如输入: 2 3 4
* 目标:想输出三个数之和
* 处理方式:let sum = input.split(" ").reduce((sum, val)=>sum +=parseInt(val),0);
* 说明:1. split()是根据“空格”分割,将字符串转成数组['2', '3', '4'];
* 2. reduce()是对数组['2', '3', '4']求和,其中parseInt是将数组里每项转变成“数值”类型
**/
}).close('close', ()=>{
console.log(`接口结束了,这里也可以输出想输出的内容`)
});
示例
注:以下前端数据处理方式非最优,仅是想展示下readline如何实际用起来
题目:输入2行数字,求所有输入内容的和
输入:
1 3 4
10 11 13 14
预期结果:56
编码答题:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let nums = []; //这里存放所有行输入数值内容
rl.on('line', (input) => {
//将每行input内容转成数值集合
let inputArr = input.split(" ").map(val=>parseInt(val));
//将每行数值集合合并到nums里,形成一个大集合
nums = nums.concat(inputArr);
}).close('close', ()=>{
//计算nums数组之和
let Sum = nums.reduce((sum, val)=>sum +=val,0);
console.log(`输出计算结果:${Sum }`);//56
});