Перебирать определенный массив объектов и присваивать новому объекту

#javascript #arrays #reactjs #loops #object

#javascript #массивы #reactjs #циклы #объект

Вопрос:

У меня есть это ниже пользовательских данных, поступающих из серверной части. userData может быть null или userData.accountDetails может быть null. Мне нужно userData.accountDetails выполнить конкретный цикл. И присваивать весь объект userData новому объекту newUserData .

 const userData = {
  age:45,
  sex: 'Male',
  accountDetails: [
    {
      accountId: '4567',
      accountName: 'checkings',
      balance: 3000,
    },
    {
      accountId: '1234',
      accountName: 'savings',
      balance: 3000,
    }
  ]
}
  

Для достижения этого я выполняю следующие шаги

 const newUserData = null;
if(userData !== null amp;amp; userData !== undefined) {
  newUserData.age = userData.age,
  newUserData.sex = userData.sex,
  
  if(userData.accountDetails !== null amp;amp; userData.accountDetails !== undefined) {
    newUserData.accountDetails = userData.accountDetails.map(el => {
      return {
        accountId: el.accountId,
        accountName:el.accountName,
        balance: el.balance   10;
      }
    }
  }
}

  

Пожалуйста, обратите внимание, я делаю el.balance 10 это потому, что хочу, чтобы новый объект имел баланс 10, добавленный к исходному балансу. На самом деле мне нужно выполнить более сложные вычисления, но я упростил их для этого примера.

Текущий код не работает, он не входит в цикл и завершается без выдачи сообщения об ошибке в консоли. как я могу добиться такого переназначения объекта и перебирать массив accountDetails, чтобы получить новый объект, как указано выше.

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

1. Пропущенная кавычка после male в данных.

2. @LouysPatriceBessette — извините, это была опечатка, когда я вводил здесь код. исправлено

3. Есть пара опечаток… Но основная проблема заключается в объявлении newUserData as null вместо пустого объекта. Увидимся с вашим кодом, работающим в этом CodePen

4. @LouysPatriceBessette — действительно. это была ошибка. я подумал, что если я присвою ему значение null. я могу определить структуру объекта позже. но часть создания должна быть упомянута как объект. спасибо за исправление

Ответ №1:

Вы могли бы сопоставить его так же, как вы это делали с возрастом и полом. Кроме того, вы можете проверить, является ли объект нулевым, выполнив if (userData)

 const newUserData = null;
if(userData) {
  newUserData.age = userData.age,
  newUserData.sex = userData.sex,
  
  if(userData.accountDetails) {
    newUserData.accountDetails.Id = el.accountId
    newUserData.accountDetails.accountName = el.accountName
    newUserData.accountDetails.balance = el.balance   10
      }
    }
  }
}