我有一個包含另一個陣列的陣列。我需要使用子陣列中的值過濾父陣列。我實際上對如何去做以及是否可能感到困惑
struct ConnectionDetailSection {
var connections: [ConnectionDetail]
let type: ConnectionType
let itemsType: [ConnectionDetailSectionContentType]
let itemsIndex: [IndexPath] // permission's table view indexpath
}
struct ConnectionDetail {
var dsAccountId: String?
}
我想根據 dsAccountId 過濾 [ConnectionDetailSection]。這可能嗎?
uj5u.com熱心網友回復:
你的問題對我來說不是很清楚,所以請用輸入和所需的輸出更新你的問題,這可能會導致我的答案發生變化。
答案是肯定的,可以過濾嵌套陣列中的資料。
為簡單起見,我洗掉了結構中所有額外的鍵。
struct ConnectionDetailSection {
var connections: [ConnectionDetail]
}
struct ConnectionDetail {
var dsAccountId: String
}
let detail: [ConnectionDetailSection] = [
.init(connections: [.init(dsAccountId: "stack"), .init(dsAccountId: "queue"), .init(dsAccountId: "array"), .init(dsAccountId: "tree")]),
.init(connections: [.init(dsAccountId: "sorting"), .init(dsAccountId: "searching"), .init(dsAccountId: "bfs"), .init(dsAccountId: "dfs")]),
]
let filteredData = detail.filter({ data in
return data.connections.contains(where: { $0.dsAccountId == "bfs" })
})
print(filteredData) //[[.init(dsAccountId: "sorting"), .init(dsAccountId: "searching"), .init(dsAccountId: "bfs"), .init(dsAccountId: "dfs")]]
現在,假設我們有一個array=> ConnectionDetailSection。在這個陣列中,有嵌套陣列,在這個例子中我們有data structures和algorithms。所以,如果我們想過濾掉array=> ConnectionDetailSection,基于演算法 like bfs,那么我們將只過濾掉array它的嵌套陣列并檢查是否包含匹配dsAccountId,在我們的例子中需要dsAccountId的是bfs。
因此,它將回傳過濾后的陣列,這就是過濾嵌套陣列的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416304.html
標籤:
