let cities = [{ "name" : "SF", "id" : 4, "population" : 10, favorite: false}, { "name" : "NY", "id" : 5, "population" : 20, favorite: false}, { "name" : "DC", "id" : 6, "population" : 30, favorite: false}
我有一个数组,如果用户应用基于人口的过滤器,我可以使用 filter 方法过滤该数组,但它为我提供了另一个包含过滤数据的数组。在过滤数组中,用户可以最喜欢的城市,当用户删除过滤器时,我需要显示带有最喜欢指示器的城市的完整列表。问题是过滤数组是一个单独的数组,完整数组不知道过滤数组上的属性是否已更改。有没有更简单的方法来处理这一切?我可以过滤主数组而不是创建另一个数组吗?
最佳答案
创建 JSON 结构
struct City {
var name : String = ""
var id : Int = 0
var population : Int = 0
var favorite : Bool = false
}
这是城市数组
var cities = [City(name: "SF", id: 4, population: 10, favorite: false),City(name: "NY", id: 5, population: 10, favorite: false),City(name: "DC", id: 6, population: 30, favorite: false)]
然后根据人口 == 10 对城市应用过滤器
var filter = cities.filter({ $0.population == 10 })
然后选择其中最喜欢的一个
Ex:- filter[1].favorite = true
并在主数组中更新这个最喜欢的城市
cities = cities.map { (city) -> City in
var city = city
if city.id == filter[1].id {
city.favorite = true
}
return city
}
关于ios - Swift - 数组过滤器,然后更新主数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53604711/