有没有办法替换嵌套的for-in循环

时间:2019-04-04 06:18:19

标签: ios swift

在我的代码中,我嵌套了查询以获取数据,为此,我必须走到最后一层才能获取该值。为此,我必须运行循环4次。而不是在领域函数中有什么方法可以减少此循环和访问时间?

var tax = 0.0
for item in items {
    for menuItem in item.itemOrderMenu {
        for customize in menuItem.menuSetItems {
            for custom in customize.customizationItems where custom.isSelected {
                tax += custom.taxAmount
            }
        }
    }
}

是否有更好的方法来访问嵌套数据?

1 个答案:

答案 0 :(得分:1)

您可以使用一堆flatMap,然后使用filter,最后使用reduce

let customisationItems = items.lazy.flatMap { $0.itemOrderMenu.lazy.flatMap { $0.menuSetItems.lazy.flatMap { $0.customisationItems } } }
let tax = es.filter { $0.isSelected }.reduce(0.0, { $0 + $1.taxAmount })

我认为您不能再减少它的嵌套了。