如何从字符串数组中删除特定对象。这是我的字符串数组
[
Top cities,
==================================,
Bangalore,
Mumbai,
Delhi,
----------------------------------------,
Kerla
]
我们要删除与城市无关的这三个对象。
我尝试了下面的代码,但没有删除所有对象。它仅删除“热门城市”
if let idx = self.arrayValues.firstIndex(where: { ($0 as! String) .contains("Top") || ($0 as! String) .contains("======")||($0 as! String) .contains("------") }) {
self.arrayValues.remove(at: idx)
}
可降解类
struct Service : Decodable {
var name: String
var id: String
}
struct Location : Decodable {
enum CodingKeys : String, CodingKey {
case locationList
}
var locationList : [String]?
}
extension Location {
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
locationList = try values.decodeIfPresent([String].self, forKey: .locationList)
}
}
我们有两种类型的响应,您可以通过“可解码类”来理解
答案 0 :(得分:1)
这与接受的答案相同,但是,如果要采用功能编程方法,则可能需要执行以下操作:
let arrayValues = ["1","Top cities","2","======"]
let newArrayValues = arrayValues.filter { !$0.contains("Top") && !$0.contains("======") && !$0.contains("------") }
您可能还希望按如下所示分隔每个过滤条件:
let newArrayValues = arrayValues
.filter { !$0.contains("Top") }
.filter { !$0.contains("======") }
.filter { !$0.contains("------") }
答案 1 :(得分:0)
firstIndex
仅在需要所有满足过滤条件的索引时才获取第一项的索引,即可轻松使用removeAll
var arrayValues = ["1","2"]
self.arrayValues.removeAll(where: { $0.contains("Top") || $0.contains("======")|| $0.contains("------") })