合并数组内json的相同项,不同项合并成数组
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/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)));
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献13条内容
所有评论(0)