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