将项目分成不同的数组

时间:2015-02-17 18:07:15

标签: 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 x in area3
        put x in 3Array
    ...
    if x in area20
        put x in 20Array
例如,

其中x可以在A和3中。检查是否该项目在他们各自的区域内。

此代码有23个非常相似的查看检查和23行将项添加到相关数组中,因此在我看来应该有一些明显的方法来清理它。

如何重构这一点以减少支票数量?

2 个答案:

答案 0 :(得分:0)

您可以创建一个函数,其中包含x,a和数组作为参数,检查x是否在a中,如果不是则将其放入数组中。

此外,您可以在没有外部循环

的循环中循环遍历数组

答案 1 :(得分:0)

我通过将要检查的区域放入数组,然后循环遍历每个数组来解决这个问题:

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

因为我使用的特定语言具有if-then-exitWith结构(类似于使用break)并且还允许您访问foreach循环索引,所以上述方法似乎是最简洁的方法。