我有一个错误获取数组的中间索引。这是数组:
CountedArray = ["Jake","Jacob","Sam","Tom","Ben","Joe","Bob","Chen","sara","Simon"]
我有一个错误获取数组的中间索引。这是数组:
CountedArray = ["Jake","Jacob","Sam","Tom","Ben","Joe","Bob","Chen","sara","Simon"]
关于什么
let index = CountedArray.count == 0 ? 0 : (CountedArray.count / 2) - 1
试试下面的代码:
let middle = CountedArray.count / 2
print(CountedArray[middle])
这里有一些担忧。
odd多个元素,则只有一个中间元素even有两个元素empty,则没有中间元素考虑到上述用例,我可以使用数组类型的扩展从数组中找到我的中间元素:
extension Array {
var middleElements: (first: Element, second: Element?)? {
if count == 0 {
return nil
} else if count.isEven {
// even number of elements
let middleIndex = count / 2
let element1 = self[middleIndex - 1]
let element2 = self[middleIndex]
return (element1, element2)
} else {
// odd number of elements
let middleIndex = count / 2
let element = self[middleIndex]
return (element, nil)
}
}
}
// helper extension
extension Int {
var isEven: Bool {
return self % 2 == 0
}
}
具有 3 个元素的数组:
let array = ["One", "Two", "Three"]
if let first = array.middleElements?.first {
print(first) // Prints Two
}
if let second = array.middleElements?.second {
print(second)
}
具有 2 个元素的数组:
let array = ["One", "Two"]
if let first = array.middleElements?.first {
print(first) // Prints One
}
if let second = array.middleElements?.second {
print(second) // Prints Two
}
具有 1 个元素的数组:
let array = ["One"]
if let first = array.middleElements?.first {
print(first) // Prints One
}
if let second = array.middleElements?.second {
print(second)
}
空数组:
let array: [String] = []
if let first = array.middleElements?.first {
print(first)
}
if let second = array.middleElements?.second {
print(second)
}
// Prints nothing