合并数组内json的相同项,不同项合并成数组

网友投稿 840 2022-11-15

合并数组内json的相同项,不同项合并成数组

合并数组内json的相同项,不同项合并成数组

服务端可能会给我大量冗余数据让我们自己处理,如下列有多个id相同的是一条数据,却分成多个json丢出来,我们要合并一下相同项,将不同项后面变成数组;服务端给的数据如下:

var json = [ { "lotteryTypeItemName":"主胜2.68", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"胜平负", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"167299" // 赛事ID }, { "lotteryTypeItemName":"客胜2.68", // 投注项名称 "homeScore":"0", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"1", // 客场得分 "lotteryTyepName":"胜平负", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"167299" // 赛事ID }, { "lotteryTypeItemName":"1:0", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"167299" // 赛事ID }, { "lotteryTypeItemName":"2:1", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"167299" // 赛事ID }, { "lotteryTypeItemName":"2:2", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"167299" // 赛事ID }, { "lotteryTypeItemName":"主胜2.68", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"胜平负", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"100000" // 赛事ID }, { "lotteryTypeItemName":"客胜2.68", // 投注项名称 "homeScore":"0", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"1", // 客场得分 "lotteryTyepName":"胜平负", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"100000" // 赛事ID }, { "lotteryTypeItemName":"1:0", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"100000" // 赛事ID }, { "lotteryTypeItemName":"2:1", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"100000" // 赛事ID }, { "lotteryTypeItemName":"2:2", // 投注项名称 "homeScore":"1", // 主场得分 "orderId":"100142", // 订单ID "orderItemId":"99842", // 子订单ID "matchName":"", // 赛事名称 "issueNum":"4008", // 竞猜期数 "matchStartTime":"2018-05-19 01:31:22", // 比赛时间 "result":"主胜", // 竞猜结果 "matchStatus":"完场", // 赛事赛果 "visitScore":"0", // 客场得分 "lotteryTyepName":"比分", // 玩法 "lotteryTypeItemId":"206506",// 投注项ID "matchTeam":"AC米兰vs阿纳森", // 对战队伍 "lotteryTypeId":"44742", // 玩法ID "matchId":"100000" // 赛事ID } ];

我们要求变成如下数据,json的相同项合并,不同项保留key,value变成数组;

[ { "lotteryTypeItemName":[ "主胜2.68", "客胜2.68", "1:0", "2:1", "2:2" ], "homeScore":"1", "orderId":"100142", "orderItemId":"99842", "matchName":"", "issueNum":"4008", "matchStartTime":"2018-05-19 01:31:22", "result":"主胜", "matchStatus":"完场", "visitScore":"0", "lotteryTyepName":"胜平负", "lotteryTypeItemId":"206506", "matchTeam":"AC米兰vs阿纳森", "lotteryTypeId":"44742", "matchId":"100000" }, { "lotteryTypeItemName":[ "主胜2.68", "客胜2.68", "1:0", "2:1", "2:2" ], "homeScore":"1", "orderId":"100142", "orderItemId":"99842", "matchName":"", "issueNum":"4008", "matchStartTime":"2018-05-19 01:31:22", "result":"主胜", "matchStatus":"完场", "visitScore":"0", "lotteryTyepName":"胜平负", "lotteryTypeItemId":"206506", "matchTeam":"AC米兰vs阿纳森", "lotteryTypeId":"44742", "matchId":"167299" }]

用如下代码实现:

const map = {}; for(const o of json){ if(!map.hasOwnProperty(o.matchId)){ map[o.matchId] = o; const val = map[o.matchId].lotteryTypeItemName; map[o.matchId].lotteryTypeItemName = [val]; }else{ map[o.matchId].lotteryTypeItemName.push(o.lotteryTypeItemName); } } console.log(map); function transform(obj){ var arr = []; for(var item in obj){ arr.push(obj[item]); } console.log(arr); console.log(arr[0].lotteryTypeItemName.toString()); return arr; } transform(map); console.log(JSON.stringify(transform(map)));

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:11、EasyUI的布局
下一篇:VUEX基本介绍?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~