Arrays 过滤对象数组中的关键点
我有一个对象数组,我想创建另一个对象数组,该数组将包含这些过滤对象 我的原始数组Arrays 过滤对象数组中的关键点,arrays,swift,xcode,filtering,nsarray,Arrays,Swift,Xcode,Filtering,Nsarray,我有一个对象数组,我想创建另一个对象数组,该数组将包含这些过滤对象 我的原始数组 "Items": [ { "Aisle": 1, "CabinClass": "F", "CabinSideA": "L", "CabinSideB": "XL", "CabinSideC": "XL", "Cabin
"Items": [
{
"Aisle": 1,
"CabinClass": "F",
"CabinSideA": "L",
"CabinSideB": "XL",
"CabinSideC": "XL",
"CabinSideD": "XL",
"CabinSideE": "L",
"CabinSideF": "R",
"CabinSideG": "XR",
"CabinSideH": "XR",
"CabinSideJ": "XR",
"CabinSideK": "R",
"ConfigA": {
"Primary": [],
"Secondary": "W"
},
"ConfigB": {
"Primary": [],
"Secondary": ""
},
"ConfigC": {
"Primary": [],
"Secondary": ""
},
"ConfigD": {
"Primary": [],
"Secondary": ""
},
"ConfigE": {
"Primary": [],
"Secondary": "A"
},
"ConfigF": {
"Primary": [],
"Secondary": "A"
},
"ConfigG": {
"Primary": [],
"Secondary": ""
},
"ConfigH": {
"Primary": [],
"Secondary": ""
},
"ConfigJ": {
"Primary": [],
"Secondary": ""
},
"ConfigK": {
"Primary": [],
"Secondary": "W"
},
"Deck": "U",
"FltKey": 6013807,
"IsDeleted": false,
"RowA": "A",
"RowB": "X",
"RowC": "X",
"RowD": "X",
"RowE": "A",
"RowF": "A",
"RowG": "X",
"RowH": "X",
"RowJ": "X",
"RowK": "A"
}
,
{
"Aisle": 2,
"CabinClass": "F",
"CabinSideA": "L",
"CabinSideB": "XL",
"CabinSideC": "XL",
"CabinSideD": "XL",
"CabinSideE": "L",
"CabinSideF": "R",
"CabinSideG": "XR",
"CabinSideH": "XR",
"CabinSideJ": "XR",
"CabinSideK": "R",
"ConfigA": {
"Primary": [],
"Secondary": "W"
},
"ConfigB": {
"Primary": [],
"Secondary": ""
},
"ConfigC": {
"Primary": [],
"Secondary": ""
},
"ConfigD": {
"Primary": [],
"Secondary": ""
},
"ConfigE": {
"Primary": [],
"Secondary": "A"
},
"ConfigF": {
"Primary": [],
"Secondary": "A"
},
"ConfigG": {
"Primary": [],
"Secondary": ""
},
"ConfigH": {
"Primary": [],
"Secondary": ""
},
"ConfigJ": {
"Primary": [],
"Secondary": ""
},
"ConfigK": {
"Primary": [],
"Secondary": "W"
},
"Deck": "U",
"FltKey": 6013807,
"IsDeleted": false,
"RowA": "A",
"RowB": "X",
"RowC": "X",
"RowD": "X",
"RowE": "A",
"RowF": "A",
"RowG": "X",
"RowH": "X",
"RowJ": "X",
"RowK": "A"
}
]
我想筛选只包含“CabinSide%”的密钥
所以我的目标数组应该是这样的
[
{
"CabinSideA": "L",
"CabinSideB": "XL",
"CabinSideC": "XL",
"CabinSideD": "XL",
"CabinSideE": "L",
"CabinSideF": "R",
"CabinSideG": "XR",
"CabinSideH": "XR",
"CabinSideJ": "XR",
"CabinSideK": "R"
},
{
"CabinSideA": "L",
"CabinSideB": "XL",
"CabinSideC": "XL",
"CabinSideD": "XL",
"CabinSideE": "L",
"CabinSideF": "R",
"CabinSideG": "XR",
"CabinSideH": "XR",
"CabinSideJ": "XR",
"CabinSideK": "R"
}
]
如果dict
定义为
let dict = [
"Items": [
[
"Aisle": 1,
...
],
[
"Aisle": 2,
....
]
]
]
使用项
字典
上的方法以获得预期结果
if let items = dict["Items"] as? [[String:Any]] {
let results = items.map { $0.filter({ $0.key.hasPrefix("CabinSide") }) }
print(results)
}
输出:
[["CabinSideC": "XL", "CabinSideB": "XL", "CabinSideD": "XL", "CabinSideA": "L", "CabinSideE": "L", "CabinSideH": "XR", "CabinSideG": "XR", "CabinSideF": "R", "CabinSideJ": "XR", "CabinSideK": "R"], ["CabinSideC": "XL", "CabinSideB": "XL", "CabinSideD": "XL", "CabinSideA": "L", "CabinSideE": "L", "CabinSideH": "XR", "CabinSideG": "XR", "CabinSideF": "R", "CabinSideJ": "XR", "CabinSideK": "R"]]
假设您有一个变量dict来存储上述json
var outputItems: [[String: Any]] = []
if let items = dict["Items"] as? [[String: Any]] {
for item in items {
print(item)
outputItems.append(item.filter({ (key, value) -> Bool in
key.starts(with: "Cabin")
}))
}
}
变量outputItems将包含您所需的数据。我已将“Items”存储在[Any]类型的数组中。Items
必须是[[String:Any]]]
类型。您是否亲自尝试过?