原有数组:

要求按照 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
	}
}
(adsbygoogle = window.adsbygoogle || []).push({});