Swift 数组和字典

数组和字典的遍历(enumerated)

数组和字典的遍历有两种方式。

  • 方式1:
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属性;
}
  • 方式2:
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)
        }