Swift - 获取数组中的第一项,并返回元素和索引
问题描述:
我想返回给定的自定义对象数组中的第一个项目,并返回索引数组和第一个自定义对象元素,这样我就可以围绕一个警戒语句它。Swift - 获取数组中的第一项,并返回元素和索引
即:
let firstOrder = existingOrders.enumerated().flatMap{$0,$1}.first
或尝试#1
let array = existingOrders.enumerated().map { (a, b) in return [$0.index : $1.element] }.first
,或者尝试#2
let array = existingOrders.enumerated().map { ($0.offset, $0.element) }.first
print (array)
这没有返回实际的对象;它似乎返回一个元组。
其中
existingOrders = [ExistingOrder, EngineYard.ExistingOrder, EngineYard.ExistingOrder]
它返回下列;
[(0, EngineYard.ExistingOrder), (1, EngineYard.ExistingOrder), (2, EngineYard.ExistingOrder)]
尝试#3;
let array = existingOrders.enumerated().map { ($0.offset, $0.element) }
print (array)
guard let firstOrder = array.first else {
break
}
print (firstOrder) // should be a tuple of index and custom object
如何获取数组中的可选第一项并返回索引和元素?
非常感谢
编辑。我这样做的原因是,我可以将正确的对象转移到另一个类。
// transfer all
while (factory.existingOrders.count > 0) {
let array = myOrderBook.existingOrders.enumerated().map { ($0.offset, $0.element) }
guard let firstOrder = array.first else {
break
}
let index = (firstOrder.0)
factory.orderBook.transfer(index: index, destination: .completedOrder)
}
凡Orderbook
是一类;
Factory {
var orderBook:OrderBook = OrderBook()
}
OrderBook {
var existingOrders: [ExistingOrder] = [ExistingOrder]()
var completedOrders: [CompletedOrder] = [CompletedOrder]()
}
这个想法是,我想从现有的订单转移的对象来完成的订单,反之亦然
功能需要一个指标,但我想我可能会重构它这样我就可以把一个对象代替。
答
我一直在寻找的答案是;
let array = myOrderBook.existingOrders.enumerated().map { ($0.offset, $0.element) }
然而,我发现我所需要的代码进行重构。
谢谢。
发行已结束。
请给出你想要实现的例子。 – PGDev
我认为尝试#3给了我后面的结果;我有一个自定义对象数组,我需要在元组中获取第一个和它的索引,而命令'existingOrders.enumerated()。map {($ 0.offset,$ 0.element)}'似乎这样做(至少在快速的操场上) – zardon
如果你知道它是第一个元素,那么你为什么要它的索引? – PGDev