我在字串陣列中有很多值。['A','B','C','D','E']。
我必須像這樣搜索。如果 Array 包含A ,B則它是admin. 如果它包含C,E那么它是resercher。如果它是包含B,C,D那么它是manager。
我正在為它寫下面的代碼。它不作業。你能幫我嗎?
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);
}
我知道它不起作用,因為它正在將元素與多個值進行比較。我該如何解決這個問題?
uj5u.com熱心網友回復:
您可以使用every并includes利用您的邏輯
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);
具有用于角色檢查的單獨物件的重復代碼較少
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();
}
}
uj5u.com熱心網友回復:
正如@ChrisG 提到的,您可以改用Array.includes或Array.some。
const groups = ['A','B','C','D','E']
if (groups.some(group => ['A', 'B'].includes(group))) {
setAdmin(true);
} else if (...) {
...
}
uj5u.com熱心網友回復:
這是一個非常簡單的解決方案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)
} // ...
uj5u.com熱心網友回復:
假設 React 沒有問題useState,您是否指的是 OR,||陳述句,如果是這樣,@Nick Vu 有答案,因為您只是在groups串列中回圈,因此在單個集成中不可能有兩個相同的元素。
否則,如果您想實作 AND&&條件,則解決方案是其他的。
uj5u.com熱心網友回復:
const groups = ['A','B','C','D','E']
function setAdmin() {
console.log('admin')
}
function setResearcher() {
console.log('researcher')
}
function setRiskMgr() {
console.log('risk manager')
}
if(arr.some(a=>a==="A")&&arr.some(a=>a==="B")) setAdmin(true);
if(arr.some(a=>a==="C")&&arr.some(a=>a==="E")) setResearcher(true);
if(arr.some(a=>a==="B")&&arr.some(a=>a==="C")&&arr.some(a=>a==="D")) setRiskMgr(true);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/460221.html
標籤:javascript
