如何访问对象中的某个Array [property]?

时间:2019-05-06 09:27:07

标签: javascript

我需要访问对象数组中的属性。我需要获取rowData,迭代元素(Foreach) 在应用程序目录数组中,选择“名称”元素,并加入自定义数组apps.name,将其分配给调查表的另一个属性,组成一个新名称,例如“ appNames”,在ag-grid标头中使用此名称。但是我以某种方式未能做到这一点,我缺少了一些东西。

我的有效载荷是:

{
    "id": 1,
    "firstName": "test",
    "lastName": "customer",
    "status": 1,
    "accountType": "CUSTOMER",
    "licenseType": "BASIC",
    "questionnaire": {
        "id": 6,
        "companysize": "MICRO",
        "industry": {
            "id": 1,
            "name": "Agriculture and Mining"
        },
        "language": "CZ",
        "appCatalog": [
            {
                "appIdToSearch": 6,
                "appNameDefault": "SECURITY PLUS"
            },
            {
                "appIdToSearch": 121,
                "appNameDefault": "New logo test CZ"
            }
        ],
        "customApps": [
            {
                "id": 16,
                "name": "asd",
                "enabled": false
            },
            {
                "id": 49,
                "name": "aaaaaa",
                "enabled": false
            }
        ]
    }
}

以及我正在访问该对象的其他属性的代码:

{
  headerName: 'First Name',
  field: 'firstName',
  sortable: true,
  filter: true,
  checkboxSelection: true,
  editable: true,
  resizable: true,
},
{
  headerName: 'Last Name',
  field: 'lastName',
  sortable: true,
  filter: true,
  editable: true,
  resizable: true,
},
{
  headerName: 'Email',
  field: 'email',
  sortable: true,
  filter: true,
  editable: true,
  resizable: true,
},
{
  headerName: 'Phone',
  field: 'phone',
  sortable: true,
  filter: true,
  editable: true,
  resizable: true
},
{
  headerName: 'Employee Count',
  field: 'questionnaire.companysize',
  sortable: true,
  filter: true,
  editable: false,
  resizable: true
},
{
  headerName: 'Industry',
  field: 'questionnaire.industry.name',
  sortable: true,
  filter: true,
  editable: false,
  resizable: true
},
{
  headerName: 'Language Preference',
  field: 'questionnaire.language',
  sortable: true,
  filter: true,
  editable: false,
  resizable: true,
},
{
  headerName: 'Apps I am using',
  field: 'AppNames',
  sortable: true,
  filter: true,
  editable: false,
  resizable: true
},

最后一个是我无法访问的那个。

  

此字段等于AppNames ===   appCatalog.appNameDefault + customApps.name   但是我做不到,请问有人可以帮我!

2 个答案:

答案 0 :(得分:1)

您可以获取costumApp的名称:

yourObject.questionnaire.appCataloge[0].forEach((item,index)=>{
    //do Staff with one item there...
    item.appNameDefault  = item.appNameDefault+' '+yourObject.questionnaire.customApps[index].name;
});

答案 1 :(得分:1)

您可以使用数组的映射功能。

customNames = yourObject.questionnaire.customApps.map(app => appNameDefault + app.name);

customNames将包含所有customApps名称。

有关地图功能,请参见MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map