Arrays 如何将两个字典合并到一个数组中?
我的JSON数据如下图所示。现在,我想将商店类型和促销的Arrays 如何将两个字典合并到一个数组中?,arrays,swift,dictionary,merge,swift5,Arrays,Swift,Dictionary,Merge,Swift5,我的JSON数据如下图所示。现在,我想将商店类型和促销的值合并为一个,用作集合视图数据。我该怎么做 我只是从服务器中过滤响应数据,如下所示: var dataBanDau: [SDFilterModel] = [] var quickData: [SDFilterModel] = [] let filters: [SDFilterModel] = data self.filterEntries = filters
值
合并为一个,用作集合视图数据。我该怎么做
我只是从服务器中过滤响应数据,如下所示:
var dataBanDau: [SDFilterModel] = []
var quickData: [SDFilterModel] = []
let filters: [SDFilterModel] = data
self.filterEntries = filters
//let nsarray = NSArray(array: self.filterEntries! , copyItems: true)
// self.filterEntriesStoreConstant = nsarray as! Array
self.dataBanDau = filters
for i in 0..<self.dataBanDau.count {
if self.dataBanDau[i].search_key.count == 0 {
self.quickData.append(self.dataBanDau[i])
}
}
self.quickData = self.quickData.filter {
$0.type != "range"
}
DispatchQueue.main.async {
//Note: Reload TableView
self.quickFilterCollection.reloadData()
completed(true)
}
}
创建这样的模型
struct Option {
let name: String
let searchKey: String
let id: String
}
struct Model {
let type: String
let name: String
let isExpanded: Bool
let value: [Option]
}
您应该获得选项
数组值并加入所有数组
let models:[Model] = //...
let collectionViewArray = models.map { $0.value }.reduce([Option](), +)
将用于
循环
var collectionViewArray = [Option]()
for model in models {
collectionViewArray.append(contentsOf: model.value)
}
假设您有
让myArray=[1,2,3,4,5,6,7,8]
现在,您需要对数组中的每个元素进行平方运算
有了for循环,你会喜欢这个吗
for item in myArray {
print(item * item)
}
现在假设item=$0
用for映射
myArray.map({ $0 * $0 })
两者的输出相同
映射:用于对数组的每个元素执行相同的操作
let myArr = [[1,2,3],[4,5,6,7]]
flatmap:用于整平数组的数组
let myArr = [[1,2,3],[4,5,6,7]]
您希望o/p为[1,2,3,4,5,6,7]
因此可以使用myArr.flatMap({$0})
现在回到你的问题上来
let reqArray = myModel.data.map({ $0.value }).flatMap({ $0 })
首先,map
为您提供了键数组值数组
,但您需要一个数组,因此需要使用flatmap。
您可以选择ref:显示您的模型结构/类您可以使用
map
。研究map函数可能会有所帮助,但解决方案可能是使用flatMap。var filterEntries:[SDFilterModel]?
这不应该是SDFilterModel
。为filterEntries
创建新的结构类型。检查我的answer@Bad_Developer只需这样做让reqArray=myModel.data.map({$0.value}).flatMap({$0})
。现在,reArray
是单个数组中包含value
键的值。为什么要使用reduce
?我想,说了些别的。你忘了filter@dahiya_boy我们也可以为此使用reduce
<代码>[1,2]。减少(0,+)给出3
。和[[1],[2]]。reduce([Int](),+)
给出[1,2]
。仔细阅读问题,OP只需要匹配两个不同值的键的值。