后台给的数据中有相同的一个id,需要通过判断来查找相同的id给所有相同添加一个属性比如 index:1,当第二个相同的数据添加 index:2,以此类推
// 这是后台返回的数据
let arr = [
{
objectId:"1", // 共同的id
loacalId:"34243", // 自身的id
name:"第一条数据"
},
{
objectId:"1",
loacalId:"34244",
name:"第二条数据"
},
{
objectId:"1",
loacalId:"34245",
name:"第三条数据"
},
{
objectId:"2",
loacalId:"453324",
name:"第四条数据"
},
{
objectId:"2",
loacalId:"453325",
name:"第五条数据"
}
]
// 我们想要的数据, z注意看num 当第一个相同的objectId,num是1,当另一组objectId相同时num变成了2,以此来类推
let arr = [
{
objectId:"1", // 共同的id
loacalId:"34243", // 自身的id
name:"第一条数据",
num:1,
},
{
objectId:"1",
loacalId:"34244",
name:"第二条数据",
num:1,
},
{
objectId:"1",
loacalId:"34245",
name:"第三条数据",
num:1,
},
{
objectId:"2",
loacalId:"453324",
name:"第四条数据",
num:2,
},
{
objectId:"2",
loacalId:"453325",
name:"第五条数据",
num:2,
}
]
首先第一步:我们需要把数据进行整理把所有相同id的放到一起,这样页面渲染上相同规整到一起,而且如果是表格还方便做合并
abilitySort(arr, property) {
let res = [];
for (let k = 0; k < arr.length; k++) {
let map = arr[k][property];
for (let i = 0; i < arr.length; i++) {
if (map == arr[i][property]) {
res.push(arr[i])
}
}
}
// 去重
res = [...new Set(res)]
}
this.abilitySort(list, 'objectId') // 第一个参数是数据,第二个参数是用来判断的id
第二步:通过相同的id给每个数据添加我们需要的
datePushName(res){
let newRes = JSON.parse(JSON.stringify(res))
let tempArr = []
let Data = []
for (let i = 0; i < newRes.length; i++) {
// this.filedName 是很多地方要用到数据中的id来判断处理数据
if (tempArr.indexOf(newRes[i][this.filedName]) === -1) {
Data.push({
fatherId: newRes[i][this.filedName],
child: [newRes[i]]
})
tempArr.push(newRes[i][this.filedName])
} else {
for (let j = 0; j < Data.length; j++) {
if (Data[j][this.filedName] == newRes[i][this.filedName]) {
Data[j].child.push(newRes[i])
break;
}
}
}
}
res.forEach(item => {
Data.forEach((val, ind) => {
if (item[property] == val.fatherId) {
item['num'] = ind + 1
}
})
})
return res;
}
this.datePushName(list) // 参数是数据