//假設我有以下數據 const data = [ { 'tm': '2020-05-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-06-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm' ...
//假設我有以下數據
const data = [ { 'tm': '2020-05-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-06-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-05-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-07-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-05-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-09-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-02-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' }, { 'tm': '2020-02-16', 'nm': 'haha', 'tmp': 'piouyjhjkn' } ] // var list = [ // // 有相同的at,加入到child // { // 'tm': '2020-02-16', // 'child': [{ // 'nm': 'haha', // 'tmp': 'piouyjhjkn' // }, // { // 'nm': 'haha', // 'tmp': 'piouyjhjkn'0 // }] // }, // // 沒有相同的就原樣 // { // 'tm': '2020-02-16', // 'nm': 'haha', // 'tmp': 'piouyjhjkn' // }] // 查重 const resObj = {} for(let item of data){ if(resObj[item.tm]){ resObj[item.tm].push(item) // 第一次一定是走不到if 所以走到else 後面給的是數組 所以可以push }else { resObj[item.tm] = [item] } } // console.log(resObj); // 數據的處理 const res = [] for(let key in resObj){ if(resObj[key].length > 1){ let child = resObj[key].map(item=>{return {nm:item.nm,tmp:item.tmp}}) res.push({ at:key, child }) }else { res.push(resObj[key][0]) } } console.log(res)