Tengo muchos valores en la matriz de cadenas. ['A B C D E'].
tengo que buscar asi. si Array contiene A ,B entonces es admin . si contiene C,E entonces es resercher . si contiene B,C,D entonces es manager .
Estoy escribiendo debajo del código para ello. no funciona. ¿Puedes ayudarme con lo mismo?
const groups = ['A','B','C','D','E'] for (let i = 0; i < groups.length; i++) { if (groups[i]==='A'&& groups[i] ==='B' ) setAdmin(true); if (groups[i]==='C' && groups[i] ==='E' ) setResearcher(true); if (groups[i]==='B' && groups[i] ==='C' && groups[i] ==='D' ) setRiskMgr(true); }Sé que no funciona porque está comparando elementos con múltiples valores. ¿Cómo puedo resolver esto?
Puede usar every e includes para utilizar su lógica
const groups = ['A', 'B', 'C', 'D', 'E'] const userGroups = { admin: ['A', 'B'], researcher: ['C', 'E'], riskManager: ['B', 'C', 'D'] } function setAdmin() { console.log('admin') } function setResearcher() { console.log('researcher') } function setRiskMgr() { console.log('risk manager') } if (userGroups.admin.every(group => groups.includes(group))) setAdmin(true); if (userGroups.researcher.every(group => groups.includes(group))) setResearcher(true); if (userGroups.riskManager.every(group => groups.includes(group))) setRiskMgr(true);Código menos repetido con un objeto separado para verificaciones de roles
const groups = ['A', 'B', 'C', 'D', 'E'] const userGroups = { admin: { values: ['A', 'B'], set: function() { setAdmin(true) } }, researcher: { values: ['C', 'E'], set: function() { setResearcher(true) } }, riskManager: { values: ['B', 'C', 'D'], set: function() { setRiskMgr(true); } } } function setAdmin() { console.log('admin') } function setResearcher() { console.log('researcher') } function setRiskMgr() { console.log('risk manager') } for(const key in userGroups) { if(userGroups[key].values.every(group => groups.includes(group))) { userGroups[key].set(); } }Como mencionó @ChrisG, puede usar Array.includes o Array.some en su lugar.
const groups = ['A','B','C','D','E'] if (groups.some(group => ['A', 'B'].includes(group))) { setAdmin(true); } else if (...) { ... }Es una solución bastante simple con Array.includes
const groups = ['A','B','C','D','E'] if(groups.includes('A') && groups.includes('B')) { setAdmin(true); } else if(groups.includes('C') && groups.includes('E')) { setReasercher(true) } // ...