javascript - JavaScript:如何向现有的 JSON 数组添加新项目?
问题描述
我有一个 JSON 数组,如下所示:
0: {stop: "C.-D.-Friedrich Straße", time: "04:38:00", realtime: "04:39:00"}
1: {stop: "Zellescher Weg", time: "04:40:00", realtime: "04:40:00"}
2: {stop: "SLUB", time: "04:41:00", realtime: "04:41:00"}
3: {stop: "TU Dresden", time: "04:42:00", realtime: "04:41:00"}
4: {stop: "Nürnberger Platz", time: "04:43:00", realtime: "04:42:00"}
5: {stop: "Bernhardstraße", time: "04:44:00", realtime: "04:43:00"}
6: {stop: "Chemnitzer Straße", time: "04:45:00", realtime: "04:44:00"}
7: {stop: "Löbtau", time: "04:47:00", realtime: "04:47:00"}
这种结构在我的 JSON 数组中重复了 210 次:
现在我想在每个停止数组中添加两个新项目,例如:
0: {stop: "C.-D.-Friedrich Straße", time: "04:38:00", realtime: "04:39:00", diff_minute: "1", diff_hour: "0"}
我的尝试:
for (var i = 0; i < trainsData.length; i++){
for (var j = 0; j < trainsData[i].stops.length; j ++){
var start = trainsData[i].stops[j].time;
var end = trainsData[i].stops[j].realtime;
start = start.split(":");
end = end.split(":");
var startDate = new Date(0, 0, 0, start[0], start[1], start[2]);
var endDate = new Date(0, 0, 0, end[0], end[1], end[2]);
var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff / 1000 / 60 / 60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff / 1000 / 60);
timeDifference = [{diff_minute: minutes, diff_hour: hours}];
trainsData[i].stops[j].push(timeDifference)
}
}
不幸的是,我收到 trainsData[i].stops[j].push 不是函数的错误。
如果有人可以帮助我,那就太好了。
解决方案
你可以做:
const trainsData = [{stop: "C.-D.-Friedrich Straße",time: "04:38:00",realtime: "04:39:00"},{stop: "Zellescher Weg",time: "04:40:00",realtime: "04:40:00"},{stop: "SLUB",time: "04:41:00",realtime: "04:41:00"},{stop: "TU Dresden",time: "04:42:00",realtime: "04:41:00"},{stop: "Nürnberger Platz",time: "04:43:00",realtime: "04:42:00"},{stop: "Bernhardstraße",time: "04:44:00",realtime: "04:43:00"},{stop: "Chemnitzer Straße",time: "04:45:00",realtime: "04:44:00"},{stop: "Löbtau",time: "04:47:00",realtime: "04:47:00"}]
const result = trainsData.map((item) => {
const start = item.time.split(':')
const end = item.realtime.split(':')
const startDate = new Date(0, 0, 0, start[0], start[1], start[2])
const endDate = new Date(0, 0, 0, end[0], end[1], end[2])
let diff = endDate.getTime() - startDate.getTime()
const hours = Math.floor(diff / 1000 / 60 / 60)
diff -= hours * 1000 * 60 * 60
const minutes = Math.floor(diff / 1000 / 60)
const timeDifference = {
diff_minute: minutes,
diff_hour: hours
}
// new item keys
return { ...item, ...timeDifference }
})
console.log(result)
.as-console-wrapper {max-height: 100% !important;top: 0;}
推荐阅读
- javascript - 在不退出全屏窗口的情况下将所有内容重置为初始状态?
- haskell - 如何测试 Scotty 端点
- c# - SQL:从表条目中获取开始日期时间和结束日期时间之间的持续时间
- docker - gRPC 未实现/未知服务
- node.js - ReactJS SSR 导航到主页
- python - 如何在 django 中有效地对模型 obj 进行排名
- ruby-on-rails - 通过 hashid 查询 ActiveRecord
- r - R:从未命名的向量列表中生成数据框,其中包含来自向量名称的名称列
- android - dlopen 失败:在 android 11(android r)上找不到符号“__exidx_end”
- python - 使用多个子图在 seaborn 散点图上叠加一条垂直线