У меня есть массив объектов, у которого есть имя свойства "modulePermissions" внутри массива имен объектов "tabList". У меня есть один объект как "moduleName", который содержит то же значение, что и имя "modulePermissions", которому было присвоено логическое значение. Итак, теперь для "tabList" нам нужно проверить значение "modulePermissions", если значение "modulePermissions" совпадает с именем свойства moduleName, тогда логическое значение свойства moduleName` будет присвоено "tabList" " enableTabs "в качестве значения.

Ts :

  moduleName = {
        Details: true,
        "Basic Info": true,
        "Captive Info": true,
        "Users": true,
        "Settings": true,
        "Restrictions": true,
        "Agents Group View": true,
        "W9": true,
        "EO": true,
        "License": true,
        "ACH": true,
        "Contacts": true,
        "Uploads": true,
        "Notes": true,
        "Tasks": true,
        "History": true,
        "Commissions": true
      }

tabList = [
    { name: 'Details', class: 'active', active: false, href: 'basic', tabEvent: '_detailsTab', id: 1, enableTabs: false,modulePermissions:'Details' },
    { name: 'W-9', class: '', active: false, href: 'w9', tabEvent: '_w9Tab', id: 2, enableTabs: false,modulePermissions:'W9' },
    { name: 'E&O', class: '', active: false, href: 'eo', tabEvent: '_eoTab', id: 3, enableTabs: false,modulePermissions:'EO'},
    { name: 'License', class: '', active: false, href: 'license', tabEvent: '_licenseTab', id: 4, enableTabs: false,modulePermissions:'License' },
    { name: 'ACH', class: '', active: false, href: 'ach', tabEvent: '_achTab', id: 5, enableTabs: false,modulePermissions:'ACH' },
    { name: 'Contacts', class: '', active: false, href: 'contacts', tabEvent: '_contactsTab', id: 6, enableTabs: false,modulePermissions:'Contacts' },
    { name: 'Uploads', class: '', active: false, href: 'uploads', tabEvent: '_uploadTab', id: 7, enableTabs: false,modulePermissions:'Uploads' },
    { name: 'Notes', class: '', active: false, href: 'notes', tabEvent: '_notesTab', id: 8, enableTabs: false,modulePermissions:'Notes' },
    { name: 'Tasks', class: '', active: false, href: 'tasks', tabEvent: '_taskTab', id: 9, enableTabs: false,modulePermissions:'Tasks' },
    { name: 'History', class: 'link-disabled', active: false, href: 'history', tabEvent: '_historyTab', id: 10, enableTabs: false,modulePermissions: 'History'},
    { name: 'Commissions', class: '', active: false, href: 'commission', tabEvent: '_commissionTab', id: 11, enableTabs: false,modulePermissions:'Commissions' }
  ]

Я пробовал использовать что-то вроде этого:

getValue(){
   for (let i = 0; i < 16; i++) {
                this.tabList[i]['modulePermissions'] == userPermissions.moduleName.this.tabList[i]['modulePermissions'];
                this.tabList[i]['enableTabs'] = userPermissions.moduleName.this.tabList[i]['modulePermissions']
              }
}
0
Bhrungarajni 14 Янв 2021 в 12:17

2 ответа

Лучший ответ

Я сделаю что-то подобное:

for ( let i = 0; i < tabList.length; i++ ) {
    let module = tabList[i];
    if(moduleName[module.modulePermissions] !== undefined ){
        module.enableTabs = moduleName[module.modulePermissions];
    }
}
1
anncb 14 Янв 2021 в 10:18

Вы можете использовать Array.prototype.map (https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) для итерации tabList.

И Object.prototype.hasOwnProperty (https: / /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty), чтобы проверить, существует ли данное свойство.

Примерно так должно работать:

const getModifiedTabList = () => {
    return tabList.map((tabListEntry) => {
        if (Object.prototype.hasOwnProperty.call(moduleName, tabListEntry.modulePermissions)){
            const enableTabs = moduleName[tabListEntry.modulePermissions];
            return {...tabListEntry, ...{enableTabs}}
        }
        return tabListEntry
    })
}

PS: в этом примере предполагается, что moduleName и tabList доступны в области.

0
Makatumba 14 Янв 2021 в 10:10
65716230