Я использую React Native и Open Weather Map API для создания небольшого погодного приложения. Данные, которые я извлекаю из вызова API, - это больше, чем я хочу использовать, поэтому я анализирую только те части, которые мне нужны, и сохраняю их в массиве. Затем я беру массив и устанавливаю его в объект состояния. Я могу ссылаться на объект, но вместо того, чтобы сказать, что мой массив - это массив, он говорит, что это объект, и, следовательно, не позволит мне использовать какие-либо методы для него. Как мне обойти это?
//reponseData is the data retrieved from the API call; the data retrieved is an object with arrays and objects
within. The forecast data for the next five days is given in 3 hour increments, so you have a 40 item array of
data pieces. I loop through this list of 40 items, pull out just what I need...
let forecastArray = [];
for (let i=0; i<responseData.list.length; i++) {
let day = responseData.list[i].date
let high = responseData.list[i].weather[0].hiTemp
let low = responseData.list[i].weather[0].loTemp
let condition = responseData.list[i].sys.condition
forecastArray.push(day)
forecastArray.push(high)
forecastArray.push(low)
forecastArray.push(condition)
this.setState({
forecastData: forecastArray
})
Когда я регистрируюсь, я получаю массив ....
console.warn("forecast is: ", this.state.forecastData)
OUTPUTS: forecast is: ["11-06-2019", 52.5, 47.3, "sunny", "11-06-2019", 63.9, 39.7, "sunny", ...]
Ссылка на this.state.forecastData [2], например,однако давал мне ошибки. Итак, я проверил typeof this.state.forecast, чтобы увидеть почему, и он говорит, что массив - это Object? Мне нужно дополнительно разделить массив данных и манипулировать им. Первые несколько элементов (от прогнозирования прогнозирования [0] до прогнозирования [9]) будут относиться к прогнозируемой погоде на 11-06-2019 в 15:00, 18:00, 21:00, поэтому мне нужно вытащить эти элементы, получить самый высокий максимум и самый низкий минимум,и т.д. Я не могу этого сделать, поскольку не могу даже ссылаться на элементы в массиве.
Вещи, которые я пробовал: использовать методы Object.entries и Object.assign, но это просто разбивает элементы нанесколько массивов, причем первый элемент - это номер местоположения, а второй - содержимое элемента массива. Я пытался манипулировать массивом внутри компонента, который его использует, но он все еще является объектом, а не массивом, поэтому я не могуссылаться на отдельные элементы. Набор данных достаточно велик, и я не думаю, что было бы целесообразно вставлять каждый из 40+ элементов в их собственный ключ объекта состояния.