首页 > 解决方案 > Swift - 如何过滤多维数组

问题描述

我在这样的数组中有数组;

var trucks: [boxes]
var boxes: [items]
var items: [fruits]

我想在物品中找到“苹果”并将它们保存在卡车阵列中。(我将重新加载 collectionView 并显示新的过滤部分...等)

我试过:

let myArray = trucks.boxes

let searchArray = myArray.flatMap {
  $0.items
     .filter {$0.name == "apple"}
}

但我得到的是 items 数组。

标签: iosarraysswiftfilter

解决方案


我不确定您的类/结构的结构是什么,但是根据以下定义,结果将包含具有名称为“apple”的项目的框

struct Truck {
    let boxes: [Box]
}

struct Box {
    let items: [Item]
}

struct Item {
    let name: String
}

let truck = Truck(boxes: [
    Box(items: [Item(name: "Banana")]),
    Box(items: [Item(name: "Apple"), Item(name: "Pear")])
])

let searchArray = truck.boxes
    .filter { box in
        box.items.contains(where: { item in item.name.lowercased() == "apple" })
    }

推荐阅读