Итерация по массиву и добавление элементов к объекту

У меня есть объект массива, который выглядит так

identificationType: "DL",
identificationDesc: "Test",
referenceNumber: "123456789",
country: "US",
province: "Illinois"

Я хочу, чтобы моя модель данных выглядела так

identificationType: "DL",
identificationDesc: "Test",
referenceNumber: "123456789",
issuedEntity:{
country: "US",
province: "Illinois"
}

Первоначально я присваиваю массив объектов переменной

identification: this.model['identificationArray'].

IdentificationArray представляет собой массив объектов и содержит все детали, но в простом формате json. Я хочу иметь возможность каким-то образом манипулировать им и вставлять данные, создавая объект issueEntity, а затем детали страны и провинции внутри этого объекта.

Для этого я попытался перебрать массив, но получаю сообщение об ошибке. Может ли кто-нибудь помочь мне понять, как это сделать.

myModel.identification.forEach(identificationObj => {
issuedEntity: {
province = identificationObj.issuedEntity.province,
country = identificationObj.issuedEntity.country,
}
} 
);

Какую ошибку вы получаете?

Bjorn 'Bjeaurn' S 29.05.2019 11:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
128
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете использовать функцию карты массива и вернуть объект с необходимыми ключами

let data = [{
  identificationType: "DL",
  identificationDesc: "Test",
  referenceNumber: "123456789",
  country: "US",
  province: "Illinois"
}]

let newData = data.map(function(item) {
  return {
    identificationType: item.identificationType,
    identificationDesc: item.identificationDesc,
    referenceNumber: item.referenceNumber,
    issuedEntity: {
      country: item.country,
      province: item.province
    }

  }
});

console.info(newData)

Я думал так же!

Nikhil Zurunge 29.05.2019 11:57

Вы можете map изменить исходный объект и изменить его внутренние значения или добавить к нему внешние значения.

myModel.identification.map(idObj => {
   idObj.issuedEntity = {
       province: idObj.province
       country: idObj.country
   }
   delete idObj.province
   delete idObj.country
   return idObj
})

Я думаю, проблема здесь в том, что мы используем = вместо : двоеточия при присвоении значения объекту.

    myModel.identification.forEach(identificationObj => {
    issuedEntity: {
        province **=** identificationObj.issuedEntity.province,
        country **=** identificationObj.issuedEntity.country,
    }
});

Это должно быть так

myModel.identification.forEach(identificationObj => {
    issuedEntity: {
        province: identificationObj.issuedEntity.province,
        country: identificationObj.issuedEntity.country,
    }
});

На всякий случай, если вы захотите использовать Синтаксис ES6, вы должны сделать то же самое:

let data = [{
  identificationType: "DL",
  identificationDesc: "Test",
  referenceNumber: "123456789",
  country: "US",
  province: "Illinois"
}]

let newData = data.map(({
  identificationType,
  identificationDesc,
  referenceNumber,
  country,
  province
}) => ({
  identificationType,
  identificationDesc,
  referenceNumber,
  issuedEntity: {
    country,
    province
  }
}));

console.info(newData)

Другие вопросы по теме