足し算
- 普通に足す
let array1 = ["a","b","c","d"]
let array2 = ["b","c","e"]
print(array1 + array2)
// ["a", "b", "c", "d", "b", "c","e"]
- 重複を省いて足す
let array1 = ["a","b","c","d"]
let array2 = ["b","c","e"]
//重複を省いて、array1 + array2 をするメソッド
func addArrays(array1: [String],array2: [String]) -> [String] {
var resultArray = array1
let addArray = array2
addArray.forEach { (li) in
if array1.index(of: li) == nil {
resultArray.append(li)
}
}
return resultArray
}
print(addArrays(array1: array1, array2: array2))
//["a", "b", "c", "d", "e"]
※2017年05月26日追記
重複をさせたくないだけなら、こんな方法もありました
let array1 = ["a","b","c","d"]
let array2 = ["b","c","e"]
let values = array1 + array2
let orderedSet = NSOrderedSet(array: values)
let uniqueValues = orderedSet.array as! [String]
print(uniqueValues)
//["a", "b", "c", "d", "e"]
参考サイト:【Swift】配列内で重複する要素を除去する
引き算
let array1 = ["a","b","c","d"] //引かれる配列
let array2 = ["b","c"] //引く配列
//array1 - array2 をするメソッド
func subtractionArrays(array1: [String],array2: [String]) -> [String] {
var resultArray = array1
let subArray = array2
subArray.forEach { (a) in
if resultArray.index(of: a) != nil {
resultArray.remove(at: resultArray.index(of: a)!)
}
}
return resultArray
}
print(subtractionArrays(array1: array1, array2: array2))
// ["a","d"]
足し算は直感的にできますが、引き算は少し難しいですね(汗
※2017年05月26日追記
@hmhmsh さんと @elzup さんにコメントを頂きました
- setを使う方法
let array1 = ["a","b","c","d"]
let array2 = ["b","c","e"]
//重複を省いて、array1 + array2 をするメソッド
func addArrays(array1: [String],array2: [String]) -> [String] {
return Array(Set(array1 + array2))
}
print(addArrays(array1: array1, array2: array2))
//["b", "e", "a", "d", "c"]
//sorted()をかけるとアルファベット順にしてくれる
print(addArrays(array1: array1, array2: array2).sorted())
//["a", "b", "c", "d", "e"]
- filterを使う方法
let array1 = ["a","b","c","d"] //引かれる配列
let array2 = ["b","c"] //引く配列
let res = array1.filter { v in return !array2.contains(v) }
print(res)
// "["a", "d"]\n"
以上になります。コメントしてくださった方、ありがとうございました!