javascript - 我如何在困难的数组中进行总计
问题描述
我需要不同任务的帮助(对我来说不同,因为我是 JS 的新手)我有数组:
let results = [
{
"id": "su-1617788623816",
"name": "СУ 2 Мельница",
"dist": "57",
"results":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":40271011,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":4815050,"timeP":0,"speed":"170","shod":false,"reason":""}
]
},
{
"id": "su-1617788623816",
"name": "СУ 2 Мельница",
"dist": "57",
"results":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":10271011,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":1815050,"timeP":0,"speed":"170","shod":false,"reason":""}
]
}
]
我必须有这样的结果:
let result = [
{
"id": "su-1617788623816",
"name": "СУ 2 Мельница",
"dist": "57",
"results":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":X1,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":X2,"timeP":0,"speed":"170","shod":false,"reason":""}
],
"total":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":X1,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":X2,"timeP":0,"speed":"170","shod":false,"reason":""}
]
},
{
"id": "su-1617788623816",
"name": "СУ 2 Мельница",
"dist": "57",
"results":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":Y1,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":Y2,"timeP":0,"speed":"170","shod":false,"reason":""}
],
"total":
[
{"crew":"13","disc":"60414658612aea0018a1f08e","time":Y1+X1,"timeP":0,"speed":"111","shod":false,"reason":""},
{"crew":"52","disc":"60414658612aea0018a1f08e","time":Y2+X2,"timeP":0,"speed":"170","shod":false,"reason":""}
]
}
]
我没有任何想法,结果可能超过 2。在每一步上,我必须有总当前步骤 + 之前的步骤
解决方案
您可以执行以下操作:
results.forEach((ele,index)=>{
let total = results[index].results;
for(let i = 0;i<=index;i++){
results[index].results.forEach((element,index)=>{
total[index].time += element.time;
})
}
results[index].total=total;
})
我想这应该工作!
更新 :
上面的代码中存在参考问题,解决方法如下:
var resultsCopy = JSON.parse(JSON.stringify(results));
resultsCopy.forEach((ele,index)=>{
let total = resultsCopy[index].results;
for(let i = 0;i<=index;i++){
resultsCopy[index].results.forEach((element,index)=>{
total[index].time += element.time;
})
}
results[index].total=total;
})
推荐阅读
- python - unitval.replace 语句覆盖代码的其他部分?
- javascript - 为什么 Glide js 文件在第一次访问时不加载?
- c - C:使用 scanf() 输入未知大小
- python - 简化的 Scrappy 不会定位 js 元素
- html - 向文本溢出提供另一个字符串时反转字符:省略号;
- shipping - 什么时候可以运送危险品?
- java - 为 Java Color 类实现字符串标识符
- regex - 在scala上提取表达式失败
- python - 在 Pygame 中移动子弹
- python - Django FilterSet field lookup dictionary format