arrays - Swift - 获取数组中的第一项,并返回元素和索引

标签 arrays swift filtering enumeration

我想返回给定自定义对象数组中的第一项,并返回索引数组和第一个自定义对象元素,以便我可以在其周围包装一个保护语句。

即:

让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) }

但是,我发现我的代码需要重构。

谢谢。

问题已结束。

关于arrays - Swift - 获取数组中的第一项,并返回元素和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303848/

相关文章:

java - 使用二维数组存储线的一部分

arrays - 使用月份过滤数组(具有 "Date"成员)

swift - 水平 UITableView - Swift

ios - Swift 3 - 基于字符串变量的过滤数组

ffmpeg - 将带有时间线编辑(启用)的 ffmpeg 视频 delogo 过滤器应用于多个区域和多个时间帧不起作用

javascript - 用一个元素初始化数组,如果数组存在则压入元素

java - 打印Java数组的最简单方法是什么?

swift - tableView.setContentOffset(_, 动画 :) do not work after beginUpdates()

ios - 允许后谷歌登录不重定向到应用程序

Haskell 生成预过滤排列