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