前端开发中,有时候会遇到后台返回的数据不是自己想要的数据,这时候就需要前端自己对数据进行处理,废话不多说,直接上代码:
后台返回的数据可能是这样的,自己需要对数组按照年份进行拆分,怎么办呢,翻到我这边文章,问题就解决,为了方便查看数据格式,我单独把后台返回的数据进行展示
[{
SerialNumber: 1,
Id: 12,
Title: “aaaaaaaaaaaaaaaaaaaa”,
Remarks: “123123”,
HistoryTime: “2011-11-11”,
YearTime: “2011”
},
{
SerialNumber: 2,
Id: 11,
Title: “啊啊啊啊”,
Remarks: “123123”,
HistoryTime: “2011-11-11”,
YearTime: “2010”
},{
SerialNumber: 3,
Id: 10,
Title: “123”,
Remarks: “123123”,
HistoryTime: “2020-11-11”,
YearTime: “2020”
},{
SerialNumber: 3,
Id: 10,
Title: “123”,
Remarks: “123123”,
HistoryTime: “2020-11-11”,
YearTime: “2020”
},{
SerialNumber: 5,
Id: 6,
Title: "测试标题",
Remarks: "。记事本大富科技ad少部分就撒来看看链接啊单身快乐了开发↵",
HistoryTime: "2020-11-11",
YearTime: "2010"
}]
直接上方法
把年份单独取出
//数组去重
function unique(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) { //第一个等同于第二个,splice方法删除第二个
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
//调用方法
var arr = []
for (var i = 0; i < res.data.length; i++) {
arr.push(res.data[i].YearTime)
}
let year = unique(arr)
console.log(year)
输出结果
再说这里怎么根据年份把数组进行拆分
//根据年份拆分数组
let dataArr = []
res.data.map(mapItem => {
if (dataArr.length == 0) {
dataArr.push({
YearTime: mapItem.YearTime,
data: [mapItem]
})
} else {
let res = dataArr.some(item => { //判断相同日期,有就添加到当前项
if (item.YearTime == mapItem.YearTime) {
item.data.push(mapItem)
return true
}
})
if (!res) { //如果没找相同日期添加一个新对象
dataArr.push({
YearTime: mapItem.YearTime,
data: [mapItem]
})
}
}
})
输出结果:
有问题的欢迎在评论区评论,看到会回复,记得一键三连