//假设我有以下数据
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)