我正在努力提高我的代码效率,但我正在胡思乱想。我写的这段代码工作得很好,它做的正是我需要它做的事情:它检查一个数组并删除一个未知索引的对象。但我觉得有一种更好、更有效的方式来写它。我访问了Array.remove(at:),但这需要一个已知的索引。我正在使用大O表示法,不知道如何让它更容易处理。有什么想法吗?
// create a new object array
var sort : [MyCustomObject] = []
//iterate through my object array
for i in objectArray{
if i === objectToRemove{
}
else{
sort.append(i)
}
}
// set old array to sort, which no longer has the unwanted object
self.objectArray = sort发布于 2018-08-29 04:00:19
你可以试试
if let ind = objectArray.index(of:objectToRemove) {
objectArray.remove(at:ind)
}发布于 2018-08-29 21:25:06
Swift 4
使用enumerated(),您将拥有索引:
var array = ["a","b","c"]
let objectToRemove = "b"
for (index, value) in array.enumerated() {
if value == objectToRemove {
array.remove(at: index)
}
}
print(array) // Prints: ["a","c"]编辑:
或者更好的方法是使用filter:
var array = ["a","b","c"]
let objectToRemove = "b"
array = array.filter { $0 != objectToRemove } // Keeps only what is
// different from the
// objectToRemove
print(newArray) // Prints: ["a","c"]发布于 2020-06-15 16:16:52
您可以使用此泛型从数组中删除任何类型的对象
extension Array where Element: Equatable {
mutating func removeObject(object: Element) {
if let index = firstIndex(of: object) {
remove(at: index)
}
}}https://stackoverflow.com/questions/52065329
复制相似问题