首页 > 解决方案 > 根据现有响应创建新的 json 响应

问题描述

我有 json 响应,其值为 week1、week2、week3、week4 在 week 键中以及基于类别(meetingHash)和 week wise 的计数。我尝试与 .reduce 合并但没有运气。

如果我有week1 and week2for in ,meetingHash 'Hold/Uncategorized'现在为用户创建 2 行。user Sarathy Devarajumonth may

但我想合并为 { meetingHash: "Hold/Uncategorized", month: "May", UserName: "Sarathy Devaraju", Week1: 2, Week2: 0, Week3: 3, Week4: 0 }

预计为

[{"UserName":"Sarathy Devaraju","month":"May","meetingHash":"Hold/Uncategorized","Week1":2,"Week2":0,"Week3":3,"Week4":0},
          {"UserName":"Priya","month":"May","meetingHash":"Hold/Uncategorized","Week1":2,"Week2":0,"Week3":0,"Week4":0},
          {"UserName":"Sarathy Devaraju","month":"May","meetingHash":"1st Presentation / Meeting","Week1":0,"Week2":1,"Week3":0,"Week4":0},
          {"UserName":"Priya","month":"May","meetingHash":"1st Presentation / Meeting","Week1":0,"Week2":1,"Week3":0,"Week4":0},
          {"UserName":"Sarathy Devaraju","month":"Jun","meetingHash":"1st Presentation / Meeting","Week1":0,"Week2":1,"Week3":0,"Week4":0},
          {"UserName":"Priya","month":"Jun","meetingHash":"1st Presentation / Meeting","Week1":0,"Week2":1,"Week3":0,"Week4":0},
          {"UserName":"Sarathy Devaraju","month":"Jun","meetingHash":"Follow-On Meetings","Week1":1,"Week2":0,"Week3":0,"Week4":0},
          {"UserName":"Priya","month":"Jun","meetingHash":"Follow-On Meetings","Week1":1,"Week2":0,"Week3":0,"Week4":0},
          {"UserName":"Sarathy Devaraju","month":"Jul","meetingHash":"Follow-On Meetings","Week1":0,"Week2":0,"Week3":1,"Week4":0},
          {"UserName":"Sarathy Devaraju","month":"Jul","meetingHash":"Follow-On Meetings","Week1":1,"Week2":0,"Week3":0,"Week4":0},
         ]

const data = [
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 1",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 2
    },
     {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 3
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "May",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 3",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "July",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 2
    },
    {
        "UserName": "Priya",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "May",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "July",
        "count": 1
    }
];

const WEEKS = ["Week 1", "Week 2", "Week 3", "Week 4"];

const result = data.map(obj => {
        return {
            UserName: obj.UserName,
            month: obj.monthinwords,
            meetingHash: obj.MeetingHash,
            Week1: WEEKS.indexOf(obj.week) == 0 ? obj.count : 0,
            Week2: WEEKS.indexOf(obj.week) == 1 ? obj.count : 0,
            Week3: WEEKS.indexOf(obj.week) == 2 ? obj.count : 0,
            Week4: WEEKS.indexOf(obj.week) == 3 ? obj.count : 0,
        }
    }
);

console.log(result);

标签: javascripthtmljqueryjson

解决方案


const data = [
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 1",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 2
    },
     {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 3
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "May",
        "count": 1
    },
    {
        "UserName": "Sarathy Devaraju",
        "week": "Week 3",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "July",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Hold/Uncategorized",
        "monthinwords": "May",
        "count": 2
    },
    {
        "UserName": "Priya",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "Jun",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 2",
        "MeetingHash": "1st Presentation / Meeting",
        "monthinwords": "May",
        "count": 1
    },
    {
        "UserName": "Priya",
        "week": "Week 1",
        "MeetingHash": "Follow-On Meetings",
        "monthinwords": "July",
        "count": 1
    }
];

const item = {}
data.forEach(obj => {
          const key =`${obj.MeetingHash}_${obj.UserName}_${obj.monthinwords}`
              if(!item[key]) { 
                  item[key] = {
                    "Week 1": 0,
                     "Week 2": 0,
                      "Week 3": 0,
                       "Week 4": 0,
                  }
                }
      
              item[key]["UserName"] = obj.UserName
              item[key]["meetingHash"] = obj.MeetingHash
              item[key]["month"] =  obj.monthinwords
              item[key][obj.week] = obj.count

            }
);
const temp = []
Object.keys(item).forEach(record => {
    temp.push(item[record])
})
console.log(temp)


推荐阅读