javascript - 如何将 JSON 数据分解为子字符串,以便以后计算?
问题描述
我已经被这个问题困扰了几天,无法弄清楚。
以下是我拥有的数据:
body = {
columns: {
links: [
"link1 ,\nlink2\n",
"link3 ,\nlink4\n"
],
timestamps: [
"[2:00-4:30, 5:53-7:23],\n[15:15-16:16, 45:43-47:32, 1:02:30-1:03:45]",
"[1:00-3:20, 8:50-9:20],\n[18:50-19:30, 42:00-46:28, 1:05:31-1:08:00]"
]
}
};
link1 的时间戳为 2:00-4:30 和 5:53-7:23,link2 的时间戳为 15:15-16:16、45:43-47:32、1:02:30-1 :03:45,但是,它们在一个字符串中,与“link1,link2\n”相同
我打算做的如下
例如:
body["columns"]["timestamps"][0] // "[2:00-4:30, 5:00-7:00],\n[15:15-16:16, 45:43-47:32, 1:02:30-1:03:45]"
timestamp_group = body["columns"][timestamps][0].match(/(?<=\[)(.*?)(?=\])/g)[0] // "[2:00-4:30, 5:00-7:00]"
//by using timestamp_group.split('-')
timestamp_group[] // ["2:00-4:30", "5:00-7:00"]
//further split into ["2:00", "4:30"]
//then using hmsToSecondsOnly() to make it into [120,270]
function hmsToSecondsOnly(str) {
var p = str.split(':'),
s = 0, m = 1;
while (p.length > 0) {
s += m * parseInt(p.pop(), 10);
m *= 60;
}
return s;
}
最终会是这样的:
[[120,270],[300, 420]],[[,],[,],[,]]
然后我可以将链接映射到时间戳。
body["columns"]["links"][0][0] to body["columns"]["timestamps"][0][0]
并计算它们的持续时间。
我想避免使用太多嵌套的 for 循环,有没有更好(优雅)的方法来解决这个问题?谢谢。
我不确定如何正确循环它们。如果使用 forEach,我应该如何开始(嵌套或递归?)这是我在控制台中尝试过的尝试。
解决方案
推荐阅读
- javascript - How to retain function name from eslint Source Code?
- reactjs - ReactJS 验证中的无效 Hook 调用
- python-3.x - 如何阻止 end=' ' 将下一行放在上一行
- netbeans - 我无法在 netbeans 上选择主类
- javascript - 从所需文件执行函数时节点js为空对象
- python - 提取链接_使用 Python
- php - 如何将单元素关联数组的数组重组为分组子数组?
- java - 仅仅为了可读性而创建常量变量可以吗?
- macos - 删除coredata列表项时SwiftUI App崩溃EXC_BAD_ACCESS错误
- reactjs - 你如何确保每次单击 React Router 链接时,它确保组件以特定状态呈现(通过父级)?