user2004
user2004

Reputation: 1973

get object from array of arrays

i have an array of objects that looks like this:

invitations: Array<record> = [new record()];

    interface recordMap {
     value:string;
     err:string
   }

export class record{
  number: recordMap ;
  deptNumber: recordMap ;
  boothNumber: recordMap ;
  primaryEmail: recordMap ;
  members: recordMap [];
}

my backend request body has to look like this

[
  {
    "number": "string",
    "deptNumber": 0,
    "boothNumber": "string",
    "primaryEmail": "string",
    "members": [
      "string"
    ]
  }
]

this is what i have tried so far my struggle is for the members property because it is an array in the invitation array and I am trying to get only the value from it and push it to the request body array members.

the result of my code is code 400 bad request. How can i make this object?

const invitationArray = [];
    this.invitations.forEach(invitation => {
      invitationArray.push({
        number: invitation.number.value,
        deptNumber: invitation.deptNumber.value,
        boothNumber: invitation.boothNumber.value,
        primaryEmail: invitation.primaryEmail.value,
        members: invitation.members.forEach(number => number.value)
  });
});

Upvotes: 0

Views: 76

Answers (1)

Barremian
Barremian

Reputation: 31125

You could try to use array map method. From the docs:

The map() method creates a new array populated with the results of calling a provided function on every element in the calling array.

var members = [{ value: 'value1', error: 'error1' }, { value: 'value2', error: 'error2' }, { value: 'value3', error: 'error3' }, { value: 'value4', error: 'error4' }]

console.log(members.map(member => member.value));

Try the following

const invitationArray = [];
    this.invitations.forEach(invitation => {
      invitationArray.push({
        number: invitation.number.value,
        deptNumber: Number(invitation.deptNumber.value),
        boothNumber: invitation.boothNumber.value,
        primaryEmail: invitation.primaryEmail.value,
        members: invitation.members.map(member => member.value)
  });
});

Also it appears deptNumber property is expected to be of type number. I've converted it to number as well.

Upvotes: 1

Related Questions