Js根据单个属性值对数组进行分组(同类为一组)
作者:Miao 阅读:4980次
需求分析:根据数组当中某一项属性的属性值,对数组进行分组,实现把同类数据放到一起,更方便数据展示,如: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


