Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将项目分成不同的数组_Arrays_Function_If Statement_Optimization - Fatal编程技术网

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区域重叠。