我正在尝试填充下载的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对象数组中的方法吗?
答案 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)相对较快