首页 > 解决方案 > 我如何在困难的数组中进行总计

问题描述

我需要不同任务的帮助(对我来说不同,因为我是 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。在每一步上,我必须有总当前步骤 + 之前的步骤

标签: javascriptnode.jsarraysmapreduce

解决方案


您可以执行以下操作:

      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;
    })

推荐阅读