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 是需要进行过滤的字段。

 

posted @ 2022-02-07 16:30  znyzny  阅读(1297)  评论(0)    收藏  举报