有一个json数组 怎么根据场次a ,分区b, 票种c, 进行重新分组?

arr = [{a:"上午场",b:"A区",c:"标准票",d:"1"},{a:"上午场",b:"A区",c:"标准票",d:"2"},{a:"上午场",b:"B区",c:"标准票",d:"3"},{a:"下午场",b:"A区",c:"标准票",d:"4"},
{a:"下午场",b:"A区",c:"标准票",d:"5"}]
其中d是ID 唯一标识
想得到的结果:
arr1 = [{a:"上午场",b:"A区",c:"标准票",d:"1"},{a:"上午场",b:"A区",c:"标准票",d:"2"}]
arr2 = [{a:"上午场",b:"B区",c:"标准票",d:"3"}]
arr3 = [{a:"下午场",b:"A区",c:"标准票",d:"4"},{a:"下午场",b:"A区",c:"标准票",d:"5"}]

做2次遍历,
第一次遍历时,按上下午场分组,
用第一次的结果,按AB区再次遍历

arr = [{a:"上午场",b:"A区",c:"标准票",d:"1"},{a:"上午场",b:"A区",c:"标准票",d:"2"},{a:"上午场",b:"B区",c:"标准票",d:"3"},{a:"下午场",b:"A区",c:"标准票",d:"4"},
{a:"下午场",b:"A区",c:"标准票",d:"5"}];
let tem = {};
let tmpArr = [];
for(let i=0, len=arr.length; i<len; i++){
let arrJson = arr[i];
let key = arrJson.a + arrJson.b + arrJson.c;
if(tem[key]){
tmpArr = tem[key];
tmpArr.push(arrJson);
tem[key] = tmpArr;
}else {
tem[key] = [];
tem[key].push(arrJson);
}
}
for(let arr1 in tem){
console.log(tem[arr1]);
}

写的不是那么简洁

楼上写的正解

通过循环来进行分组

先获取第一个元素,加入到数组中,然后便利到下一个元素的时候,比较两个元素的key,如果相同,则加入到同一个数组中,如果不同,则更换中间变量,加入到一个新的数组中。

多次循环之后则可便利出分类数组

但是这样的方法需要数据是实现排好序的,不然是走不通的。