typescript - 在循环中修改集合
问题描述
我在 TypeScript 中有一组对象。每个对象都有一个被调用的方法,该方法getSubObjects
返回包含相同方法的相同类型对象的集合getSubObjects
。我的要求是
- 必须遍历集合
getSubObjects
中每个对象的原始集合调用。 - 对于每个对象
getSubObjects
再次返回调用。 - 继续返回每个对象,直到没有对象
所以在我的循环中,我想做如下的事情
objCol.forEach(item => {
const col = item.getSubObjects();
if(col){
objCol.pushRange(col)
}
});
我认为这在 TypeScript 中是不可能的,我能想到的唯一选择是诉诸递归,但如果有另一种方法可以做到这一点,我宁愿避免它。
解决方案
您可以通过使用如下的简单循环来避免递归(尽管我自己没有运行 [pseudo] 代码):
首先为每个对象添加另一个布尔属性processed
,初始化false
。然后:
const processedAll = () => !objCol.some(o => !o.processed);
while (!processedAll()) {
const extension = [];
objCol.forEach(item => {
if (!item.isProcessed) {
item.processed = true;
const col = item.getSubObjects();
if (col) {
col.processed = false;
extension.pushRange(col)
}
}
});
objCol = [...objCol, extension];
}
推荐阅读
- html - 如何根据图像更改背景颜色?
- python - 从 python 调用的 selenium chromedriver 行为异常
- postgresql - 在 psql 查询结果输出中引用字符串和日期
- python - 使用 Python 和 bs4 在 Excel 中排列表格,因为它以 HTML 格式显示
- swift - 将 EKRecurrenceRule 添加到提醒不起作用(创建重复事件问题)
- angular - 如何检测我的formGroup中的哪些输入字段处于模糊状态,Angular 9
- clang - QtCreator 注解编译器找不到 stdbool.h
- go - 如何拆分 .txt 文件的行并将它们添加到 Go 中的切片中?
- scala - 如何从字符串scala中提取文件扩展名
- swift - 具有多个实体的单元测试核心数据