JS过滤数组对象中的某个字段的重复数据


 1 var mergeBykey = (data, key) => {
 2             if (!data) return;
 3             let category = [], deWeightCategory = [], list = [], obj = {}
 4 
 5             // 获取所有分类
 6             data.forEach(item => {
 7                 category.push(item[key])
 8             })
 9             // 去重
10             deWeightCategory = [...new Set(category)]
11 
12             // 创建子列表数组结构
13             deWeightCategory.forEach(item => {
14                 //obj[key] = item
15                 //obj['list'] = []
16                 //list.push(obj)
17                 list.push({
18                     [key]: item,
19                     list:[]
20                 })
21             })
22 
23             // 根据分类重组子列表
24             for (let i = 0; i < data.length; i++) {
25                 const item = data[i];
26                 for (let j = 0; j < list.length; j++) {
27                     const el = list[j];
28                     if (item[key] !== el[key]) {
29                         continue;
30                     }
31                     el.list.push({
32                         ...item
33                     })
34                 }
35             }
36            // console.log(category, deWeightCategory, JSON.stringify(list));
37             return list;
38         }

 

调用方式,获得过滤后的对象数据: var fieldObj = mergeBykey(obj.data, field );

obj.data 是原始数据对象集合,field 是需要进行过滤的字段。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM