原有数组:

要求按照 type 分组输出如下数组:

函数代码:
// list=需要分组数组
// name=根据XX字段分组(同类放一组),实例是type,可以是其它根据自己需求定义
function handleSameTypeList(list, name, resultList) {
// 每一个类型的单独数组,注意此处不能return出每个sameTypeArr
// 因为递归的返回值只返回最后一次的值
let sameTypeList = []
let propVal = ''
if (list.length > 0) {
propVal = list[0][`${name}`]
let tempList = []
// 将含有相同的name属性值的对象push到此次遍历的list中
// 将其他的对象放入到tempList中,下次遍历
list.forEach((item, key) => {
if (item[`${name}`] === propVal) {
sameTypeList.push(item)
} else {
tempList.push(item)
}
})
resultList.push(sameTypeList)
list = tempList
return handleSameTypeList(list, name, resultList)
} else {
return resultList
}
}