1. 程式人生 > 其它 >JS過濾陣列物件中的某個欄位的重複資料

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