【iOS,Swift3】Extension晒す〜Array編〜
Androidエンジニアと見せかけて、
iOSエンジニア風を装って、
Unityエンジニアのふりして、
インフラエンジニアもちょっと名乗って、
当たり前のようにWebエンジニアとして仕事もするけど、
本業は未だに.NETエンジニアと思いたいけどたぶんもう無理で、
実際の身分はCEOとプレCTOとアプリ開発責任者の伊豆丸さんです。
表題の通りです。ご査収ください。
import Foundation extension Array where Element: Hashable, Element: Equatable { public func diff(_ other: [Element]) -> [Element] { let all = self + other var counter: [Element: Int] = [:] all.forEach { counter[$0] = (counter[$0] ?? 0) + 1 } return all.filter { (counter[$0] ?? 0) == 1 } } public func subtracting(_ other: [Element]) -> [Element] { return self.flatMap { element in if (other.filter { $0 == element }).count == 0 { return element } else { return nil } } } public mutating func subtract(_ other: [Element]) { self = subtracting(other) } }