ios - Swift - 如何过滤多维数组

标签 ios arrays swift filter

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

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

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

我试过:

let myArray = trucks.boxes

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

但我得到的是项目数组。

最佳答案

我不确定你的类/结构的结构是什么,但给出以下定义,结果将包含具有名称为“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" })
    }

关于ios - Swift - 如何过滤多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57362528/

相关文章:

swift - 省略 Swift 闭包中的返回类型

ios - 应用内购买卡在 "Missing Metadata"状态

java - 如何比较Java中的两个对象数组?

ios - 如何在 Objective C 中调整 UITableView 行高

c - 当初始化固定大小的 char 数组时没有足够的空间容纳 null 终止符时,不会出现编译器错误

arrays - delphi字符串stringlist数组转换

ios - 将 UnsafeMutablePointer<UInt8> 转换为字符串时堆缓冲区溢出

swift - 在 Swift 中删除字符串中(子字符串加下一个字符)的所有实例

javascript - 如何在ios safari上的hls中获取programDateTime?

iOS 8.4 - iboutlet 不填充以编程方式创建的 View Controller