这个问题其实是业务里的一个需求,先附上ui的设计图和后台返回的数据,
我前段样式是每个月份进行遍历,然后在遍历月份里面的每个数据。而后端返回的是一条条的数据(需要我们按照相同月份的数据合并成一个对象):1,截取全部数据的年份和月份:
2.去重 用到indexOf()方法,有则返回对应的索引,没有则-1:
3.创建数据方便赋值:
4:赋值
全部代码:
jfList (arr) {
var array = []
arr.forEach((item,index) => {
item.creationTime = item.creationTime.substr(0,10)
//获取全部截取日期到月份的数据
array.push(item.creationTime.substr(0,7))
});
console.log('获取全部截取月份数据',array)
//去重
var hash=[];
for (var i = 0; i < array.length; i++) {
if(hash.indexOf(array[i])==-1){
hash.push(array[i]);
}
}
console.log('去重结果',hash)
let jlList = []
hash.forEach((item,index) =>{
jlList[index] = {children:[],mon:'',year:''}
})
for (var i = 0; i < arr.length; i++) {
if(hash.indexOf(arr[i].creationTime.substr(0,7))!=-1) {
let index = hash.indexOf(arr[i].creationTime.substr(0,7))
console.log(index)
// this.$set(jlList[index],'mon',arr[i].creationTime.substr(5,2))
// this.$set(jlList[index],'year',arr[i].creationTime.substr(0,4))
jlList[index].mon = arr[i].creationTime.substr(5,2)
jlList[index].year = arr[i].creationTime.substr(0,4)
jlList[index].children.push(arr[i])
// this.$set(jlList[index],'children', jlList[index].children)
}
}
console.log('最终结果',jlList)
this.jf = jlList
},