JavaScript如何从txt文件读取数据生成二维数组(矩阵) 禁用for/while循环
无循环实现文本转二维数字矩阵方案
纯JavaScript内置方法即可实现需求,无需引入第三方库,全程不使用for/while类循环语句。
完整可运行代码
const fs = require('fs'); fs.readFile('input.txt', 'utf8',(err,data)=>{ if(err){ console.error(err); return; } // 文本转矩阵核心逻辑 const matrix = data .trim() .split('\n') .filter(line => line.trim() !== '') // 过滤掉可能存在的空行 .map(line => line .trim() .split(/\s+/) .map(Number) ); console.log(matrix); });
逻辑分步说明
- 第一步用
trim()清除读取到的文本首尾的多余空白,避免文件末尾多出的空行干扰转换结果 - 第二步用
split('\n')按换行符拆分文本,得到由每一行内容字符串组成的数组 - 第三步用
filter()筛掉拆分后可能存在的空字符串,避免空行被转成无效的空数组 - 第四步用
map()遍历每一行字符串:先清除行首尾空格,再用split(/\s+/)按任意长度的空白字符拆分出单个数字的字符串,最后再用一次map()配合Number构造函数,把所有数字字符串转成数值类型,最终得到需要的二维数组
补充说明
map、filter都是JavaScript数组原生提供的高阶遍历方法,不需要手写循环逻辑,完全符合限制要求。如果习惯使用Underscore.js,也可以把上述代码里的数组原生map、filter替换成Underscore提供的_.map、_.filter,处理逻辑完全一致。
内容的提问来源于stack exchange,提问作者Atno4721
相关产品推荐
相关产品推荐

