• 微信号:wumiao_357234902
您当前的位置:首页>web前端开发>JavaScript

Js根据单个属性值对数组进行分组(同类为一组)

作者:Miao 阅读:3200次

需求分析:根据数组当中某一项属性的属性值,对数组进行分组,实现把同类数据放到一起,更方便数据展示,如:type同样为一组。

<script type="text/javascript">
	const dataList = [{
			name: 'Apple',
			type: 'Fruit',
			price: '¥1.5'
		},
		{
			name: 'Banana',
			type: 'Fruit',
			price: '¥3.5'
		},
		{
			name: 'Grape',
			type: 'Fruit',
			price: '¥2.5'
		},
		{
			name: 'Cabbage',
			type: 'Vegetable',
			price: '¥2.5'
		},
		{
			name: 'Tomoto',
			type: 'Vegetable',
			price: '¥5.5'
		}
	]
	// 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
		}
	}
	// 结果:
	console.log(handleSameTypeList(dataList, 'type', []))
</script>

本站部分文章、数据、素材收集于网络,所有版权均归源网站或原作者所有!

如果侵犯了您的权益,请来信告知我们下线删除,邮箱:357234902@qq.com

标签:JavaScript