三维数组对象转化为一维数组对象
需要把一个三维数组对象用elementUI的表格渲染,想要做到首先要把它转为我所需要的一维数组对象,方法简单粗暴
前后效果对比
QualityManageApi.get(this.params.id).then((res) => {
const data = res.data
this.form = data
let data1 = data.voList
data1 = Array.from(data1);
function getEachData1 (obj) {
return obj.items.map((item)=>{
let data = {
...item,
...obj
};
delete data.items;
return data;
});
}
function getEachData2 (obj) {
return obj.standards.map((item)=>{
let data = {
...item,
...obj
};
delete data.standards;
return data;
});
}
const newData1 = [];
const newData2 = [];
data1.map((obj)=>{
newData1.push(...getEachData1(obj));
});
newData1.map((obj)=>{
newData2.push(...getEachData2(obj));
});
console.log(data1);
console.log(newData2);
一维对象数组转为三维数组
参考文章
https://blog.csdn.net/weixin_34365635/article/details/93612598?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control
最后用的这个方法(很好用,重点在于可以把具有相同属性的对象拆分成几个子对象的父对象,很符合我的业务需求)
https://www.jb51.net/article/232810.htm
效果
修改前
修改后
let list = Array.from(new Set(
this.voListForm.map(item => {
return item['typeName']
})))
let subList = []
list.forEach(res => {
this.voListForm.forEach(ele => {
if (ele['typeName'] === res) {
let nameArr = subList.map(item => item.typeName)
if (nameArr.indexOf(res) !== -1) {
let nameArr2 = subList[nameArr.indexOf(res)].items.map(item => item.typeName)
if (nameArr2.indexOf(ele['itemName']) !== -1) {
subList[nameArr.indexOf(res)].items[nameArr2.indexOf(ele['itemName'])].standards.push({
deductScore: ele['deductScore'],
recordsId: ele['recordsId'],
standard: ele['standard'],
})
} else {
subList[nameArr.indexOf(res)].items.push({
example: ele['example'],
itemId: ele['itemId'],
itemName: ele['itemName'],
score: ele['score'],
standards: [{
deductScore: ele['deductScore'],
recordsId: ele['recordsId'],
standard: ele['standard'],
}]
})
}
} else {
subList.push({
totalScore: ele['totalScore'],
typeId: ele['typeId'],
typeName: ele['typeName'],
items: [{
example: ele['example'],
itemId: ele['itemId'],
itemName: ele['itemName'],
score: ele['score'],
standards: [{
deductScore: ele['deductScore'],
recordsId: ele['recordsId'],
standard: ele['standard'],
}]
}]
})
}
}
})
})
console.log(subList)