对象键值要用数组值更新

时间:2018-09-10 04:44:15

标签: javascript arrays object

下面是我的尝试,我有一个对象,其中包含对象数组,其中包含一个字段:“ positionTitle”。

我还有一个对象数组,其中也有一个'positionTitle'

它们都具有相似的数据,我希望我的“ individualsData”中所有positionTitles的值都进入“ graphData”,并且现在能够使用此新的graphData!

我认为我的尝试是错误的,将它们都视为数组?

谢谢,戴尔

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
  }]
}

我希望看到的:

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;
})

2 个答案:

答案 0 :(得分:1)

由于engagementTypesengagementsmembers属性也是对象数组,因此您必须在下面以及在它们之前进行循环。

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;
})

答案 1 :(得分:0)

这是解决方案。但您必须选择哪个单独的数据项作为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
      })  
    }) 
  })

});

在此处查看控制台中的实现enter link description here