如何使用JavaScript处理weather.dat文件找出气温温差最小的日期
解决方法
关于.dat文件的常见疑问
.dat只是自定义的纯文本后缀,本质和.txt没有区别,不需要手动把数据抄进数组,直接通过脚本读取文件内容按规则解析即可。
Node.js环境实现代码(本地运行场景)
如果是在本地用Node.js运行脚本,直接调用内置的fs文件模块读取即可,示例代码如下:
const fs = require('fs'); const path = require('path'); // 填写你的weather.dat文件本地路径 const FILE_PATH = path.resolve(__dirname, './weather.dat'); fs.readFile(FILE_PATH, 'utf8', (err, data) => { if (err) { console.error('文件读取失败:', err); return; } // 按行拆分文件内容,过滤空行 const lines = data.split('\n').filter(line => line.trim() !== ''); let minDiff = Infinity; let targetDate = null; // 跳过第一行表头,从第二行开始遍历数据 for (let i = 1; i < lines.length; i++) { // 按空白字符拆分每一列,自动适配多空格、制表符分隔的格式 const columns = lines[i].trim().split(/\s+/); const date = parseInt(columns[0]); const maxTemp = parseInt(columns[1]); const minTemp = parseInt(columns[2]); const diff = maxTemp - minTemp; if (diff < minDiff) { minDiff = diff; targetDate = date; } } console.log(`温差最小的日期是当月第${targetDate}日,最小温差为${minDiff}度`); });
运行步骤
- 把上述代码保存为
getMinDiffDay.js,和weather.dat放在同一个文件夹 - 打开终端进入该文件夹,执行命令
node getMinDiffDay.js即可看到结果
浏览器端上传读取场景
如果是在前端页面让用户上传weather.dat文件解析,代码如下:
<input type="file" id="fileInput" accept=".dat"> <script> document.getElementById('fileInput').addEventListener('change', e => { const file = e.target.files[0]; const reader = new FileReader(); reader.onload = event => { const data = event.target.result; // 后续解析逻辑和Node.js版本完全一致 const lines = data.split('\n').filter(line => line.trim() !== ''); let minDiff = Infinity; let targetDate = null; for (let i = 1; i < lines.length; i++) { const columns = lines[i].trim().split(/\s+/); const date = parseInt(columns[0]); const maxTemp = parseInt(columns[1]); const minTemp = parseInt(columns[2]); const diff = maxTemp - minTemp; if (diff < minDiff) { minDiff = diff; targetDate = date; } } alert(`温差最小的日期是当月第${targetDate}日`); }; reader.readAsText(file); }); </script>
内容的提问来源于stack exchange,提问作者Debby Hikari
相关产品推荐
相关产品推荐

