У меня есть массив объектов, у которого есть имя свойства "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']
}
}
2 ответа
Я сделаю что-то подобное:
for ( let i = 0; i < tabList.length; i++ ) {
let module = tabList[i];
if(moduleName[module.modulePermissions] !== undefined ){
module.enableTabs = moduleName[module.modulePermissions];
}
}
Вы можете использовать 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
доступны в области.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.