Вставить новое значение в существующий массив в определенной позиции реагирующие крючки

#arrays #react-hooks

#массивы #реагируем крючками

Вопрос:

У меня есть for цикл, в котором я получаю статус каждого пользователя, если он подключен к сети или нет, и мне нужно поместить этот статус в существующий массив

 const user = [
  {
    "name":"John",
    "lastname":"smith"
  },
  {
    "name":"Melissa",
    "lastname":"Ryan"
  }
]
  

Я пробовал этот способ, но у меня ошибка

 for (var i = 0; i < result.length; i  ) {
          const dataR = {
            order: result[i].userID
          };
          const options = {
            method: "post",
            headers: {
              Accept: "application/json",
              "Content-type": "application/json",
              Authentication: user.getHmac("POST", "/api/getonline"),
            },
            body: JSON.stringify(dataR),
          };
          fetch(process.env.REACT_APP_DB_URI   "/getonline", options)
            .then(res => res.json())
            .catch(error => {
      
              console.error("Error:", error)
            })
            .then(response => {
              if (response) {
                user[i].push({online:response}); <---problem
             }


}
  

ОШИБКА:

Необработанное отклонение (TypeError): не удается прочитать свойство ‘push’ неопределенного

Как вставить новое значение онлайн в пользовательский массив?

Комментарии:

1. Пожалуйста, опубликуйте ошибку, которую вы получаете

2. Я обновил вопрос с ошибкой. Спасибо

Ответ №1:

user[i] неопределенность означает, что вы индексируете его вне того места, где оно определено. Например, это может быть из-за того, что result.length он длиннее вашего пользовательского массива.

Однако ваш подход не будет работать в целом, потому что user[i] это не массив, поэтому вы не можете нажать на него. Чтобы поместить эти данные в массив с online свойством для user объекта, это может быть достигнуто путем

user[i] = {...user[i], online: response};