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 是需要進行過濾的字段。