在我的代码中,我嵌套了查询以获取数据,为此,我必须走到最后一层才能获取该值。为此,我必须运行循环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
}
}
}
}
是否有更好的方法来访问嵌套数据?
答案 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 })
我认为您不能再减少它的嵌套了。