Имея несколько отдельных массивов данных, есть ли другой, более эффективный способ объединить их в объекты? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь заполнить загруженный Json и заполнить их массивом объектов. Тем не менее, существует некоторая сложность в том, как структурируются данные, как мне эффективно заполнить эти массивы в объекты?

Ниже приведена базовая структура данных Json, загружаемых из веб-службы:

{
    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 Ответ

2 голосов
/ 31 мая 2019

Что бы вы ни делали, вам все равно придется перебирать свои множественные массивы, потому что вы должны выбирать каждый элемент. Я сомневаюсь, что вы можете найти решение 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) относительно быстро

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...