部分从另一个数组制作新数组

Posted

技术标签:

【中文标题】部分从另一个数组制作新数组【英文标题】:Make new array partially from another array 【发布时间】:2020-12-21 23:34:10 【问题描述】:

我对 Swift 很陌生,如果这是一个愚蠢的问题,请原谅。

我有一个 JSON X 对象数组,我将其加载到我的应用程序中并传递视图(我有一个已定义的结构)。现在在另一个视图中,我有一个新结构,如下所示:

struct Pin: Identifiable 
    var name: String
    let id = UUID()

然后像这样创建一个数组:

@State private var pins: [Pin] = []

如何使这个数组包含Pin 对象,但由我现有的X 数组组成。我的意思是 pins 数组中的每个新 Pin 都将具有 Pin(name: X.name[0] 的值,以此类推对于我的 X 数组中的每个元素。

所以我的最终pins 数组应该类似于:

[Pin(name: x.name[0]...), Pin(name: x.name[1]...), Pin(name: x.name[2]...)...]

【问题讨论】:

X 数组到底是什么?那么新数组中的image 呢? @pawello2222 X 数组是一个对象数组,每个对象都有一个 namedescription 和几个我在这个特定视图中不需要的其他字段。您可以忽略该图像,我本来想要它但最终决定不这样做,将从代码示例中删除它:) 【参考方案1】:

您可以使用map 将一个数组转换为另一个数组:

pins = x.map  Pin(name: $0.name) 

或者,速度较慢,但​​显示了另一种使用map的方式:

pins = x.map(\.name).map(Pin.init)

【讨论】:

太棒了,这正是我需要它做的!我是一名 javascript 开发人员,每天都在使用地图,但由于某种原因,我没有想到它们也可以在 Swift 中使用……无论如何,非常感谢!

以上是关于部分从另一个数组制作新数组的主要内容,如果未能解决你的问题,请参考以下文章

从另一个数组的整数元素创建新数组? MATLAB

以角度形式将输入创建为数组

ClickHouse 截取数组的部分元素,得到一个新的子数组: arraySlice (array, offset[, length])...

交换数组的部分

如何使用 Python 制作时间表的图像/PDF

对象数组中的 UITableView 部分