for (let item of list) { let addchildren=[] if(item.orgDepartment.length>0){ let org_id = item.orgDepartment.map(e=>e.org_id) addchildren = this.orgList.filter(e=>org_id.includes(e.value)) for(let ite of item.orgDepartment){ let adds={ children:[], text:ite.title, value:ite.id, opened: false, selected: false, disabled: false, loading: false, } addchildren.find(e =>e.value === ite.org_id)?.children.push(adds); } console.log(addchildren) } let add={ children:addchildren, text:item.title, value:item.id, opened: false, selected: false, disabled: false, loading: false, } data.find(e =>e.value === item.pid)?.children.push(add); addchildren=[] }为什么addchildren叠加了
时间: 2024-02-10 13:19:22 浏览: 83
在代码中,`addchildren=[]` 表示初始化一个空数组,然后在 `if` 语句中,如果 `item` 的 `orgDepartment` 数组长度大于0,则将符合条件的元素添加到 `addchildren` 数组中。但是在 `for` 循环中,又对 `addchildren` 进行了操作,将一个对象添加到了 `addchildren` 数组中。由于 `addchildren` 是一个引用类型,所以在 `for` 循环中的操作会影响到 `addchildren` 数组的值,而 `addchildren=[]` 只能清空当前的数组,而没有清空之前的数组,因此 `addchildren` 会叠加上之前的值。如果想要避免这种问题,可以在每次使用 `addchildren` 数组前进行初始化。
相关问题
QLIST<QTreeWidgetItem*>
`QList<QTreeWidgetItem*>` 是一个 Qt 框架中的容器类,用于存储 `QTreeWidgetItem*` 类型的指针。
下面是一个简单的示例,演示如何使用 `QList<QTreeWidgetItem*>` 创建和操作对象:
```cpp
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QList>
int main() {
// 创建一个 QTreeWidget 对象
QTreeWidget treeWidget;
// 创建根节点
QTreeWidgetItem* rootItem = new QTreeWidgetItem(&treeWidget);
rootItem->setText(0, "Root");
// 创建 QList<QTreeWidgetItem*> 对象
QList<QTreeWidgetItem*> itemList;
// 创建子节点并添加到 QList 中
for (int i = 0; i < 3; i++) {
QTreeWidgetItem* item = new QTreeWidgetItem(rootItem);
item->setText(0, "Item " + QString::number(i+1));
itemList.append(item);
}
// 将 QList<QTreeWidgetItem*> 中的元素添加到根节点
rootItem->addChildren(itemList);
// 显示树形控件
treeWidget.show();
return 0;
}
```
在上述示例中,我们创建了一个 `QList<QTreeWidgetItem*>` 对象,然后使用循环创建了三个子节点,并将它们添加到 `QList` 中。最后,使用 `addChildren` 方法将 `QList<QTreeWidgetItem*>` 中的元素添加到根节点。
请注意,这只是一个示例,你可以根据实际需求进行调整和扩展。
Qtreewidgetitem子节点
QTreeWidgetItem 是 Qt 中用于表示树形结构的一个类。它提供了一个可以包含子节点的树形结构,每个节点都可以包含多个子节点。
在创建 QTreeWidgetItem 时,可以使用 addChildren 方法向其添加子节点。例如:
```
QTreeWidgetItem *parentItem = new QTreeWidgetItem();
QTreeWidgetItem *childItem = new QTreeWidgetItem();
parentItem->addChild(childItem);
```
在上面的示例中,我们创建了一个父节点 parentItem 和一个子节点 childItem,并使用 addChild 方法将子节点添加到父节点中。现在,父节点 parentItem 就包含了子节点 childItem。
可以通过 child 方法获取父节点的子节点。例如:
```
QTreeWidgetItem *childItem = parentItem->child(0);
```
在上面的示例中,我们使用 child 方法获取父节点 parentItem 的第一个子节点 childItem。
可以使用 childCount 方法获取父节点的子节点数量。例如:
```
int childCount = parentItem->childCount();
```
在上面的示例中,我们使用 childCount 方法获取父节点 parentItem 的子节点数量 childCount。
阅读全文