gpt4 book ai didi

arrays - 从另一个对象数组创建一个对象数组,稍后使用 map 重建原始对象数组

转载 作者:行者123 更新时间:2023-11-28 13:26:17 25 4
gpt4 key购买 nike

考虑以下类

class Category {
var tag: String?
var itemList: [Item]?
}

class Item {
var id: Int?
var type: String?
var itemDetails: ItemDetails?
}

class ItemDetails {
var description: String?
var name: String?
var price: Float?
}

给定一组 Category 对象。

var categoryList: [Category]

我想通过仅提取 ItemDetails 中的 name(以便应用过滤器)和 id 顺序来创建一个新的对象数组重建类别对象的返回数组。

因此,我必须重建 Category 对象的数组来自新的对象数组。

如何使用 map 功能进行提取和重建?

以下是其他数据源的示例:

数据源 1:

var categoryList: [Category],其中需要提取name

数据源 2:

var searchList = [SearchItem],其中要提取的标题。

    Class SearchItem {
var id: Int?
var details: SearchItemDetails?
var type: String?
}

Class SearchItemDetails {

var description: String?
var title: String?
}

数据源 3

var products: [Products],其中要提取的标题。

    Class Products {
var id: Int?
var details: ProductDetails?
var type: String?

}

class ProductDetails {
var description: String?
var title: String?

}

最佳答案

要获得仅包含名称的数组,您可以像您提到的那样执行 map:

let categories: [Category] = ... // this already exists
let itemNames = categories.map { $0.itemList?.map({ $0.itemDetails?.name }) }

但这会保留可选值。如果您不需要可选值,请改用 compactMap

然而,重建并没有任何意义。您是否正在使用 ID 访问数据库或网络服务?这是您能够重建原始 Category 数组的唯一可能方式。为什么不保留原始数组?

关于arrays - 从另一个对象数组创建一个对象数组,稍后使用 map 重建原始对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58311480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com