node.js - 需要帮助查找 JSON 文件 (node.js) 中列中的最大值

标签 node.js

我的地球物理学类(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))

加载数据后,我们分三步进行处理。

  1. .split('\n') 通过在换行符上进行拆分,我们将文本文件分解为一个数组,以便文本文件中的每一行都转换为数组中的一个项目。
  2. .map(line => line.split(/[ ]+/)[4]) 'map' 获取此行数组并在每一行上单独运行命令。对于每一行,我们告诉它一个或多个空格 (split(/[ ]+/)) 是列分隔符,一旦它被分成几列,即可获取该行中的第五列(我们使用 [4] 而不是 [5],因为 javascript 从 0 开始计数)。
  3. .reduce((a, b) => Math.max(a, b)) 现在我们有了一个仅包含第五列数字的数组,我们可以将数组直接发送到 Math.max 并让它为我们计算答案。万岁!

如果这个数据甚至有点不均匀,就很容易打破这个,但我假设是因为这是一项家庭作业,但情况并非如此。

祝你好运!

关于node.js - 需要帮助查找 JSON 文件 (node.js) 中列中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800712/

相关文章:

javascript - 连接两个具有相同值的数组,并使用 Javascript/Node.js 将其添加到一个 JSON 中

node.js - 如何在Lambda函数中访问API网关请求模型?

node.js - Node child_process execSync 因 xclip 而挂起

javascript - 低db : update record at index N

node.js - Macbook m1 Node js docker镜像构建失败

Javascript 导入句柄未定义

javascript - Express js 中的 app.use()、app.get()、router.get() 和 router.use() 有什么区别?

node.js - 如何使用 Node JS 创建谷歌云项目和服务帐户?

node.js - 使用 npm config 后将 script-shell 设置为 bash - 找不到命令

javascript - 无法使用 Postman 查询数据