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]]]
类型。您是否亲自尝试过?