我的地球物理学类(class)计算中有一项作业;该任务基本上是找到 txt 文件的一列中的最大值(该值是地震的震级,该文件包含 1990-2000 年的所有地震)。然后获取此类地震的纬度和经度并将其绘制在 map 上。 这个任务在 python 中完成起来非常简单,但是由于我花了一些空闲时间来研究 webdev,所以我正在考虑制作一个简单的 web 应用程序来完成完整的任务。
换句话说,我会上传一个文件到其中,它会自动将最大的地震指定到谷歌地图中。
但是由于我在 Node.js 方面是个菜鸟,因此我很难启动该项目,因此我将其分成几个部分,并且我需要有关第一部分的帮助。
我正在考虑将带有数据的 txt.file
转换为 .csv
文件,然后将其转换为 .json
文件。我完全不知道应该使用什么算法来扫描 .json
文件并找到给定列的最大值。
这是原始 .txt
文件的第一行:
1 5 0 7.0 274 102.000 -3.000
这里是一个 .csv
文件,使用在线转换器:
1 5 0 7.0 274 102.000 -3.000
这里是 .json
文件,再次使用在线转换器:
1\t 5\t 0\t7.0\t274\t102.000\t -3.000
基本上我需要扫描所有行并找到第 5 列的最大值。
对我如何开始编写这段代码有任何帮助吗?
非常感谢。
TLDR 版本:
需要查找多行 JSON 文件中第 5 列的最大值。
最佳答案
我尝试过将其作为单行代码高尔夫风格。我将省略通常的“不要让 Stack Overflow 为你做作业”的伎俩。现在的 children ,你只是在欺骗自己,yada yada。
分割、映射、缩减。
let data = require('fs').readFileSync('renan/homework/geophysicist_data.txt')
let biggest = data.split('\n')
.map(line => line.split(/[ ]+/)[4])
.reduce((a, b) => Math.max(a, b))
加载数据
后,我们分三步进行处理。
- .split('\n') 通过在换行符上进行拆分,我们将文本文件分解为一个数组,以便文本文件中的每一行都转换为数组中的一个项目。
- .map(line => line.split(/[ ]+/)[4]) 'map' 获取此行数组并在每一行上单独运行命令。对于每一行,我们告诉它一个或多个空格 (
split(/[ ]+/)
) 是列分隔符,一旦它被分成几列,即可获取该行中的第五列(我们使用[4]
而不是[5]
,因为 javascript 从 0 开始计数)。 - .reduce((a, b) => Math.max(a, b)) 现在我们有了一个仅包含第五列数字的数组,我们可以将数组直接发送到
Math.max
并让它为我们计算答案。万岁!
如果这个数据甚至有点不均匀,就很容易打破这个,但我假设是因为这是一项家庭作业,但情况并非如此。
祝你好运!
关于node.js - 需要帮助查找 JSON 文件 (node.js) 中列中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800712/