有多个单独的数据数组,还有其他更有效的方法将它们合并为对象吗?

时间:2019-05-31 07:15:17

标签: arrays swift object iteration

我正在尝试填充下载的Json并将其填充到对象数组中。但是,数据的结构有些复杂,如何才能将这些数组有效地填充到对象中?

以下是从Web服务下载的Json Data的基本结构:

{
    timestamp: [Date],
    openingStockPrice: [Double],
    closingStockPrice: [Double]
}

例如

{
    timestamp: [2019-01-01, 2019-01-02, 2019-01-03....],
    openingStockPrice: [100.0, 101.0, 95.0, ...],
    closingStockPrice: [101.0, 95.0, 99.5, ...]
}

根据数据结构,有三个单独的数组,其数据类型为日期和双精度。

因此,每个数组的第一项属于该特定日期的股票定价。每个数组的第二项属于第二天……等等。

目前,我设法遍历每个数组,并根据以下结构将数据填充到对象中。

Struct StockPrice {
    timestamp: Date, 
    openingStockPrice: Double, 
    closingStockPrice: Double
}

var stockPrice: [StockPrice]

我设法通过分别遍历每个数组将数据组织到StockPrice对象的数组中。但是,随着数据集变大,遍历每个数组似乎根本没有效率。

在这种情况下,有人可能会知道另一种将多个数组填充到一个StockPrice对象数组中的方法吗?

1 个答案:

答案 0 :(得分:2)

无论您做什么,都将不得不遍历多个数组,因为必须获取每个项目。我怀疑由于问题的性质,您能否找到O(logN)解决方案。最好是O(n)

O(n)解决方案:



var stockPrices = [StockPrice]()

//assuming timeStamps, openingStockPrices, closingStockPrices have the same number of elements
for i in 0 ..< timeStamps.count {
    let timeStamp = timeStamps[i]
    let openingStockPrice = openingStockPrice[i]
    let closingStockPrice = closingStockPrice[i]
    let stockPrice = StockPrice(timeStamp, openingStockPrice, closingStockPrice)
    stockPrices(add: stockPrice)
}

tbf,O(n)相对较快