部分从另一个数组制作新数组
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
数组是一个对象数组,每个对象都有一个 name
、description
和几个我在这个特定视图中不需要的其他字段。您可以忽略该图像,我本来想要它但最终决定不这样做,将从代码示例中删除它:)
【参考方案1】:
您可以使用map
将一个数组转换为另一个数组:
pins = x.map Pin(name: $0.name)
或者,速度较慢,但显示了另一种使用map
的方式:
pins = x.map(\.name).map(Pin.init)
【讨论】:
太棒了,这正是我需要它做的!我是一名 javascript 开发人员,每天都在使用地图,但由于某种原因,我没有想到它们也可以在 Swift 中使用……无论如何,非常感谢!以上是关于部分从另一个数组制作新数组的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse 截取数组的部分元素,得到一个新的子数组: arraySlice (array, offset[, length])...