作为我正在进行的项目的一部分,我必须构建各种报告。为了构建这些报告,我从非常大的数据集中收集数据。因此,我试图优化我的循环结构,以尽量减少内部循环内的检查。
我经常使用的其中一个全局变量(数据集的键值类型)大致具有以下结构:
dataStatus->inputDate->state->region->street->data
我必须遍历前面的每个部分才能获得我想要的数据。问题是虽然我总是有状态(它是输入屏幕中的必填字段),但可能会省略区域和街道。如果这条街道是空白的,我必须遍历该地区的所有街道。同样,如果该区域留空,我必须遍历该州内的所有区域,并再次遍历每个区域中的所有街道。
简单的解决方案是这样的:
loop through dataStatuses {
loop through dates {
if street is set {
get data
} else if region is set {
loop through streets {
get data
}
} else {
loop through regions {
loop through streets {
get data
}
}
}
}
}
但是,我真的很想要一种跳过内部检查的方法。到目前为止,我能想到的最好的解决方案是这样的:
if street is set {
loop through dataStatuses {
loop through dates {
get data
}
}
} else if region is set {
loop through dataStatuses {
loop through dates {
loop through streets {
get data
}
}
}
} else {
loop through dataStatuses {
loop through dates {
loop through regions {
loop through streets {
get data
}
}
}
}
}
有没有比这更优雅的解决方案,也许可以在达到数据之前满足 n 级的需求?
任何帮助都感激不尽。