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]() 
} 

这个想法是,我想从现有的订单转移的对象来完成的订单,反之亦然

功能需要一个指标,但我想我可能会重构它这样我就可以把一个对象代替。

+3

请给出你想要实现的例子。 – PGDev

+0

我认为尝试#3给了我后面的结果;我有一个自定义对象数组,我需要在元组中获取第一个和它的索引,而命令'existingOrders.enumerated()。map {($ 0.offset,$ 0.element)}'似乎这样做(至少在快速的操场上) – zardon

+0

如果你知道它是第一个元素,那么你为什么要它的索引? – PGDev

我一直在寻找的答案是;

let array = myOrderBook.existingOrders.enumerated().map { ($0.offset, $0.element) }

然而,我发现我所需要的代码进行重构。

谢谢。

发行已结束。