Arrays 将项目分成不同的数组
我有表格的代码Arrays 将项目分成不同的数组,arrays,function,if-statement,optimization,Arrays,Function,If Statement,Optimization,我有表格的代码 for each item x in array if x in areaA put x in aArray if x in areaB put x in bArray if x in areaC put x in cArray if x in area1 put x in 1Array if x in area2 put x in 2Array if
for each item x in array
if x in areaA
put x in aArray
if x in areaB
put x in bArray
if x in areaC
put x in cArray
if x in area1
put x in 1Array
if x in area2
put x in 2Array
if x in area3
put x in 3Array
...
if x in area20
put x in 20Array
例如,其中x可以在A和3中。检查项目是否在各自的区域内
这段代码有23个外观非常相似的检查和23行将项目添加到相关数组中的代码,因此在我看来,应该有一些明显的方法来清理这个问题
如何重构该函数以减少检查次数?您可以创建一个函数,该函数将x、a和数组作为参数,检查x是否在a中,如果不在,则将其放入数组中
此外,您可以在不使用外环的情况下在阵列上循环我通过将要检查的区域放入阵列,然后在每个阵列上循环来解决此问题:
for each item in array
for each area in areaABC
if item in area
put item in arrayABC[ foreach index]
break
for each area in area123
if item in area
put item in array123[ foreach index]
break
因为我使用的特定语言具有类似于使用break的if-then-exitWith结构,并且还允许您访问foreach循环索引,所以上面的方法似乎是最简洁的方法 这到底是什么编程语言?a是什么?你是在寻找数组与a,b,…,的交叉点吗?@joris_van_winden我试图使其通用,但不幸的是,实际语言是特定于游戏的自定义语言。是@minitech更新了问题以澄清-它们是区域,我正在检查x是否在某个区域内。基本上我是在同一个区域收集对象,但是A,B,C区域可以与1..20区域重叠。