数组和字典的遍历有两种方式。
let arr = [1,2,3]
for v in arr.enumerated() {
v.offset //就是下标序号
v.element //就是当前元素
}
let dict = [1: “first”, 2: “second”]
for v in dict.enumerated() {
v.offset //就是序号
v.element //类型是 [Int: String].Element, 有key 和value属性;
}
for (index, value) in arr.enumerated() {
//index 是下标,value是元素
}
for (index, value) in arr.enumerated() {
//index 是下标,value是 [Int: String].Element
}
样例代码:
struct Data {
var i : Int
var text : String
}
//dic 会用 Data的 i 属性来作为key生成。
let dic = Dictionary(grouping: [
Data999(i: 1, text: "haha"),
Data999(i: 1, text: "baa"),
Data999(i: 4, text: "abnn"),
Data999(i: 4, text: "erwr"),
Data999(i: 6, text: "babr"),
], by: {
$0.i
})
下面例子,将长度相同的字符串放入一个数组作为value,key为字符长度
var playerNames = ["Harry", "Ron", "Hermione", "Bil"]
//into 参数是初始化的字典。 最终返回的是另一个字典
let scoreboard = playerNames.reduce(into: [Int: [String]]()) {
if $0[$1.count] == nil {
$0[$1.count] = []
}
$0[$1.count]?.append($1)
}