Swift 将阵列拆分/拆分为更小的阵列
我有一个数组,其中文本字段是一个类别Swift 将阵列拆分/拆分为更小的阵列,swift,Swift,我有一个数组,其中文本字段是一个类别 [“id”、“cat”、“项目名称”]: [“1”、“cat1”、“某物”] [“2”、“cat2”、“某物”] [“3”、“cat1”、“某物”] [“4”、“cat1”、“某物”] [“6”、“cat1”、“某物”] [“7”、“cat2”、“某物”] [“8”、“cat2”、“某物”] [“9”、“cat2”、“某物”] 为了能够使用UITableView部分中的类别,我需要将阵列拆分为更小的阵列-对。 所以我需要: dic["cat1"][arra
[“id”、“cat”、“项目名称”]
:[“1”、“cat1”、“某物”]
[“2”、“cat2”、“某物”]
[“3”、“cat1”、“某物”]
[“4”、“cat1”、“某物”]
[“6”、“cat1”、“某物”]
[“7”、“cat2”、“某物”]
[“8”、“cat2”、“某物”]
[“9”、“cat2”、“某物”]
为了能够使用UITableView部分中的类别,我需要将阵列拆分为更小的阵列-对。
所以我需要:
dic["cat1"][array of items with cat1 in field]()
dic["cat2"][array of items with cat2 in field]()
你会怎么做呢?
我不会用
reduce
或map
来做这件事。相反,我会这样做
var dict: [String: [[String]]] = [:]
arr.forEach() {
if dict[$0[1]] == nil {
dict[$0[1]] = []
}
dict[$0[1]]?.append($0)
}
但是,我建议您更改代码结构和模型以使用struct。因此,不要使用嵌套数组,而是执行以下操作
struct Item {
let id: String
let category: String
let name: String
}
这样代码就变得更清晰,更易于阅读
let arr2 = [
Item(id: "1", category: "cat1", name: "Something"),
Item(id: "2", category: "cat2", name: "Something"),
Item(id: "3", category: "cat1", name: "Something")
]
var dict2: [String: [Item]] = [:]
arr2.forEach() {
if dict2[$0.category] == nil {
dict2[$0.category] = []
}
dict2[$0.category]?.append($0)
}
我不明白?在本例中,您将有两个键,每个键都有一个项目数组作为值。糟糕,也许我不应该再在手机上发表评论了:p您可以使用:
dict2[$0.category]=(dict2[$0.category]??[])+[$0]
来缩短它:)