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 方法过滤该数组,但是它给了我另一个带有过滤数据的数组。在过滤数组中,用户可以收藏城市,而当用户删除过滤器时,我需要显示带有收藏夹指示符的城市的完整列表。问题是过滤后的数组是一个单独的数组,整个数组不知道是否在过滤后的数组上更改了属性。有没有更简单的方法来处理所有这些?我可以过滤主数组而不创建另一个吗?
答案 0 :(得分:0)
创建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
}