[英]Swift Array Filter Multidimensional Arrays
我正在嘗試在數組條件中過濾掉數組
public struct SalesDO: Entity {
public var ID: String = UUID().uuidString
public var isDeleted: Bool = false
public var salesItems = [SalesItemDO]()
}
public struct SalesItemDO: Entity {
public var ID: String = UUID().uuidString
public var isDeleted: Bool = false
public var modifiers = [SalesItemModifierDO]()
}
public struct SalesItemModifierDO: Entity {
public var ID: String = UUID().uuidString
public var isDeleted: Bool = false
}
我想要實現的是過濾掉那些沒有被刪除的銷售項目,以及里面的銷售項目修飾符也沒有被刪除
我嘗試使用 Swift 過濾器數組函數,但它是編譯器錯誤
let rawSales = self.service.getSales(object: SalesDO()) as? SalesDO
if var sales = rawSales {
let filteredSalesItem = sales.salesItems.filter({$0.modifiers.filter({$0.isDeleted == false})})
}.filter({$0.isDeleted == false})
我也試過這個代碼
// It becomes SalesItemModifierDO array
let filteredsales = sales.salesItems.flatMap({$0.modifiers.filter({$0.wbDeleted == false})}).filter({$0.wbDeleted == false})
例如
Item A is not deleted
=> Modifier 1
=> Modifier 2
=> Modifier 3 : Deleted
Item B is deleted
=> Modifier 1
=> Modifier 2
我正在嘗試實現一個功能,它只會顯示只有 2 個修飾符的項目 A,因為修飾符 3 已被刪除。
有人可以指導我缺少什么嗎? 非常感謝您提供的任何幫助。 謝謝
您可以過濾數組以移除已刪除的銷售物品,然后映射剩余的物品以移除刪除修飾符的修飾符。
let filteredSalesItem = sales.salesItems.filter({ !$0.isDeleted }).map { (item) -> SalesItemDO in
var newItem = item // Need to make mutable interim item to change modifiers array
newItem.modifiers = newItem.modifiers.filter({ !$0.isDeleted })
return newItem
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.