Sparlarva
Sparlarva

Reputation: 804

Objects keys value to be updated with arrays value

Below is my Attempt, I have an object which has array of objects within it, it has a field: 'positionTitle'.

I also have an array of objects which also has a 'positionTitle'

They both have similar data I want all of the values for the positionTitles in my 'individualsData' to go into 'graphData' and be able to now use this new graphData!

I think my attempt is wrong its treating them both as arrays?

Thanks, Dale

graphData = {
  "engagementAreas": [{
    "id": "1",
    "engagementTypes": [{
        "name": "forestry",
        "engagements": []
      },
      {
        "name": "houses",
        "engagements": [{
          "name": "engagement1",
          "members": [{
            "position": {
              "id": "3434",
              "positionTitle": "Manager"
            }
          }]
        }]
      }
    ]
  }]
}, {
  "name": "landscaping",
  "engagements": [{
    "name": "engagement1343",
    "members": [{
      "position": {
        "id": "4545",
        "positionTitle": "Senior Manager"

      }
    }]
  }]
}

IndividualData = [{
  "account": {
    "id": "001b000003WnPy1AAF",
    "fullName": "Adnan A. Khan"
  },
  "positions": [{
    "id": "a16b0000004AxeBAAS",
    "organizationId": "001b0000005gxmlAAA",
    "organizationName": "a",
    "positionTitle": "Senior Manager, Energy",
    "positionLevel": "5-Middle Management & Advisers",
    "isPrimary": true,
    "startDate": "2016-10-07",
    "endDate": null
  }]
}, {
  "account": {
    "id": "0010X000048DDMsQAO",
    "fullName": "Christine Leong"
  },
  "positions": [{
    "id": "a160X000004nKfhQAE",
    "organizationId": "001b0000005gxmlAAA",
    "organizationName": "a",
    "positionTitle": "Managing Director",
    "positionLevel": "4-Head of Business Unit/Head of Region",
    "isPrimary": true,
    "startDate": "2018-03-05",
    "endDate": null
  }]
}

What I expect to see:

NEWgraphData = {
  "engagementAreas": [{
    "id": "1",
    "engagementTypes": [{
        "name": "forestry",
        "engagements": []
      },
      {
        "name": "houses",
        "engagements": [{
          "name": "engagement1",
          "members": [{
            "position": {
              "id": "3434",
              "positionTitle": "Senior Manager, Energy" <== from individualsdata
            }
          }]
        }]
      }
    ]
  }]
}, {
  "name": "landscaping",
  "engagements": [{
    "name": "engagement1343",
    "members": [{
      "position": {
        "id": "4545",
        "positionTitle": "Managing Director" <== also from individuals data

      }
    }]
  }]
}

graphData.engagementAreas.map((el, i) => {
  el.engagementTypes.engagements.members.position.positionTitle = individualsData.positions.positionTitle;
  return el;
})

Upvotes: 0

Views: 61

Answers (2)

sahed moral
sahed moral

Reputation: 385

Here is the solution. but you have to choose what individual data item will be the pick for the positionTitle

graphData.engagementAreas.map((el, i) => {
  return el.engagementTypes.map((el2,i2) => {
    return el2.engagements.map( (el3,i3) => {
      return el3.members.map((el4,i4) => {
        return el4.position.positionTitle =individualsDt[0].positions.[0].positionTitle;// take a look here, i just pick positionTitle staticly
      })  
    }) 
  })

});

see implementation in console here enter link description here

Upvotes: 0

Aruna
Aruna

Reputation: 12022

As engagementTypes, engagements and members properties are also array of objects, you have to loop them as well as below.

graphData.engagementAreas.map((el, i) => {
  el.engagementTypes.forEach((et) => {
     et.engagements.forEach((eg) => {
        eg.members.forEach((mem) => {
           mem.position.positionTitle = individualsData.positions.positionTitle;  // make sure this is correct
        });
     });
  });

  return el;
})

Upvotes: 1

Related Questions