У меня есть объект массива, который выглядит так
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,
}
}
);
Вы можете использовать функцию карты массива и вернуть объект с необходимыми ключами
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)
Я думал так же!
Вы можете 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)
Какую ошибку вы получаете?