簡體   English   中英

Swift Array 過濾多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM