iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
Software Development

iOS 從 Objective-c 進化為 Swift 的 30天之旅系列 第 20

[Day 20] Swift 中contains和set的使用 找重複數值用我就對了

  • 分享至 

  • xImage
  •  

前言

現在發生一個問題
在新增收入的部分
會顯示目前有的商品數量
但我只想要把重複的產品數量加總起來
我想到道應該有改SQLite的語法
下去Select
第二種作法就是自行去除重複變數
所以查到contains的用法
一起來看看吧

contains

如果單純 找字串String的話

let str = "abcd1234"
print(str.contains("a")) //true
print(str.contains("123")) //true
print(str.contains("5678")) //false

你以為只能找字串嗎
並不是
她其實可以直接找Array裡面的重複字串

let name = ["ab", "cd", "1234"]
print(str.contains("ab"))//true
print(str.contains("5678"))//false

Set

Set裡面的insert()
插入元素且數值重複不影響集合
也就是儲存時會檢查裡面是否有重複
MySQL也有類似的語法

宣告要檢查的Array

var array: Array<String> = []   
array.append("123")
array.append("456")
array.append("123")

宣告set 且使用for
檢查所有Array

var set = Set<String>()
for item in array {
    set.insert(item)
}

輸出結果

[123,456]

混合使用 檢查兩個Array共同變數

兩個Array

var array1: Array<String> = []
array1.append("123")
array1.append("123")
array1.append("456")
array1.append("789")
array1.append("012")
var array2: Array<String> = []
array2.append("123")
array2.append("456")
array2.append("1")
array2.append("2")

func傳入兩個Array
先去除重複
在檢查相同變數

func checkArray(array1: Array<String>, array2: Array<String>) -> Array<String> {
    var list = Array<String>()
    var set = Set<String>()

    for item in array1 {
        set.insert(item)
    }

    for item in array2 {
        if set.contains(item) {
            list.append(item)
        }
    }
    return list
}

結果

[123,456]

上一篇
[Day 19] Swift delegate 機制(代理)和 protocol(協議)
下一篇
[Day 21] Swift SQLite.swift 原來也可以使用原生SQL語法!?
系列文
iOS 從 Objective-c 進化為 Swift 的 30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言