You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何通过readline实现单行控制台输入填充数组?

单行输入填充数组的解决方案

你当前的代码通过循环调用rl.question()实现逐行输入,所以会出现每次输入一个值的情况。要实现单行输入多个值填充数组,只需要获取一次整行输入,再将输入内容分割为数组元素即可。

修改后的代码如下:

import * as readline from 'node:readline/promises';
import { stdin as input, stdout as output } from 'process';

const rl = readline.createInterface({ input, output });

let arr = [];
const inputStr = await rl.question('Enter Values: ');
// 按空格分割输入字符串,得到数组
arr = inputStr.split(' ');

// 可选:过滤连续空格产生的空元素,并限制数组最多5个元素(和原循环次数对应)
arr = inputStr.split(' ').filter(item => item.trim() !== '').slice(0, 5);

console.log('输入的数组内容:', arr);
await rl.close();

代码说明:

  • 仅调用一次rl.question(),提示语直接放在参数中,用户输入时会紧跟提示语,实现单行输入的效果
  • split(' ')将整行输入的字符串按空格分割为数组元素
  • filter方法用于过滤连续空格产生的空字符串,slice(0,5)确保数组最多保留5个元素,匹配你原代码的循环次数
  • 最后调用rl.close()关闭readline接口,避免进程挂起

运行后效果:

Enter Values: 1 A 2 B 3
输入的数组内容: [ '1', 'A', '2', 'B', '3' ]

如果需要将数值类元素转为数字类型,可以遍历数组处理:

arr = inputStr.split(' ')
  .filter(item => item.trim() !== '')
  .slice(0,5)
  .map(item => isNaN(Number(item)) ? item : Number(item));

内容的提问来源于stack exchange,提问作者Warface2009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:38:09