昨天在写完项目之后出现一个bug,我想简单了,我以为直接把数据传过去就行,谁知道还需要归类数据,把数据整合起来,这个是动态的整合起来。格式是这样子的
[{name: '123',children: []}]
children数组里面放的是name底下的种类。
// 先搞一个空的数组,这个是让存储把多余添加的重复数据过滤掉的数据
let arr3 = [];
// 通过结构把所有需要归类的数据结构给arr2
this.arr2 = [...i,...this.arr2];
this.selectedRowKeys = e;
e.forEach(item1 => {
this.arr2.forEach(item => {
if (this.getSelectedKeys1 == item.itemId) {
item.title = this.arr;
};
if (item1 == item.id) {
arr3.push(item)
};
});
});
// [{name: '123',children: []}]
let obj = {};
var newArr = arr3.reduce((prev, cur) => {
obj[cur.id] ? "" : obj[cur.id] = true && prev.push(cur);
return prev;
},[]);
let ac = [];
this.arrPush = newArr;
this.arrPush.forEach(cc => {
ac.push(cc.title);
});
// 这儿用到es6的新语法 set方法 set就是如果里面就多余的重复元素的话会被自动过滤掉。
ac = new Set(ac);//['a','b']
console.log('hhhh:',ac)
var uqiue = [];
ac.forEach(item=>{
uqiue.push({name: item,children: []})
});
uqiue.forEach(item=>{
newArr.forEach(item2=>{//总
// 在这儿判断的方式就是如果名字一样的话就推到children里面,币一样的话就推到另一个里面,这样就动态添加。
if(item.name === item2.title){
item.children.push(item2)
};
});
});
this.arrPush = uqiue;