this.$u.api.serviceArea.getserviceArea().then(res=>{ this.list = this.list.concat(res); console.log(res) let company1 = []; let company2 = []; for(let i=1;i<this.list.length;i++){ if (this.list[i].treeLevel == 1) { let obj = {name:''}; obj["name"] = this.list[i].companyName company1.push(obj); }else if (this.list[i].treeLevel == 2) { company2.push(this.list[i]) } } this.company = company1; console.log(this.company ) let groups = [...new Set(company2.map(item => item.parentCode))]; let newArr = groups.map(parentCode =>{ let children = company2.filter(item => item.parentCode == parentCode); children.forEach(child => { // 获取当前子项的父项 let parent = company2.find(item => item.parentCode === parentCode); // 将父项的companyName赋值给子项 child.parentName = parent.companyName; }); return children; }); this.child = newArr; console.log(this.child); 如何将treeLevel=1的元素组成一个数组,里面包含treeLevel=2并且parentCode=父节点的companyCode
时间: 2024-01-30 08:01:48 浏览: 69
您可以使用数组的 `filter()` 方法来筛选出 `treeLevel=1` 的元素,然后使用 `map()` 方法对这些元素进行处理。在 `map()` 方法中,您可以使用 `filter()` 方法再次筛选出 `treeLevel=2` 且 `parentCode` 等于当前元素的 `companyCode` 的元素,最后将这些元素添加到当前元素的一个新属性中,例如 `children`。以下是一种可能的实现方式:
```
this.company = [];
this.child = [];
this.$u.api.serviceArea.getserviceArea().then(res => {
this.list = this.list.concat(res);
// Filter out treeLevel=1 elements
const companies1 = this.list.filter(item => item.treeLevel === 1);
// Map through the treeLevel=1 elements
this.company = companies1.map(company1 => {
// Filter out treeLevel=2 elements with matching parentCode
const children = this.list.filter(item => item.treeLevel === 2 && item.parentCode === company1.companyCode);
// Add children to the company1 object as a new property
return {
...company1,
children
};
});
// Filter out all treeLevel=2 elements
const companies2 = this.list.filter(item => item.treeLevel === 2);
// Group treeLevel=2 elements by parentCode
const groups = [...new Set(companies2.map(item => item.parentCode))];
const newArr = groups.map(parentCode => {
const children = companies2.filter(item => item.parentCode === parentCode);
children.forEach(child => {
let parent = companies2.find(item => item.companyCode === parentCode);
child.parentName = parent.companyName;
});
return children;
});
this.child = newArr;
});
```
在上面的代码中,我们首先使用 `filter()` 方法筛选出 `treeLevel=1` 的元素,并将结果存储在 `companies1` 数组中。然后使用 `map()` 方法对 `companies1` 数组中的每个元素进行处理,将符合条件的 `treeLevel=2` 的元素添加到一个新的 `children` 属性中,并将结果存储在 `this.company` 数组中。
最后,我们使用 `filter()` 方法筛选出所有的 `treeLevel=2` 的元素,并使用 `map()` 方法对这些元素进行分组,将每个元素的 `parentCode` 属性作为键,将符合条件的元素分组到一个新的数组中。在分组过程中,我们还使用 `forEach()` 方法将每个元素的 `parentName` 属性设置为其父元素的 `companyName`。最终的结果存储在 `this.child` 数组中。
阅读全文