我有一个数组,可以在viewDidLoad
var bookingsArray : [[String]] = []
中实例化var configuration: [String] = []
configuration.append(textfieldFacility.text!)
configuration.append((pickSlotTF.text?.components(separatedBy: " ")[0])!)
configuration.append((pickSlotTF.text?.components(separatedBy: " ")[1])!)
bookingsArray.append(configuration as [String])
我正在以这种方式添加元素:
bookingsArray
[["A", "20-08-2017", "14:00"], ["B", "20-08-2017", "14:00"]]
看起来像:
bookingsArray
在向boot.ts
添加新元素时,我想检查新元素是否已存在于数组中。在这种多维数组的情况下我该怎么做?
答案 0 :(得分:2)
首先,如果您想要唯一对象,请使用Set
。
如果无法做到这一点,我强烈建议使用符合Equatable
而不是嵌套数组的自定义结构,例如
struct Booking : Equatable {
let facilty : String
let date : String
let time : String
static func ==(lhs : Booking, rhs : Booking) -> Bool {
return lhs.facilty == rhs.facilty && lhs.date == rhs.date && lhs.time == rhs.time
}
}
然后将数组声明为
var bookingsArray = [Booking]()
并使用
创建一个对象let dateArray = pickSlotTF.text!.components(separatedBy: " ")
let configuration = Booking(facility: textfieldFacility.text!,
date: dateArray[0],
time = dateArray[1])
bookingsArray.append(configuration)
巨大的好处是你可以轻松检查
if bookingsArray.contains(item)
答案 1 :(得分:1)
您只需使用contains()
搜索它即可。
var configuration: [String] = []
configuration.append(textfieldFacility.text!)
configuration.append((pickSlotTF.text?.components(separatedBy: " ")[0])!)
configuration.append((pickSlotTF.text?.components(separatedBy: " ")[1])!)
if !bookingsArray.contains(where: {$0 == configuration}) {
bookingsArray.append(configuration)
}