2 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
我會(huì)在函數(shù)外構(gòu)建refuse和數(shù)組并將它們作為參數(shù)傳遞。args
const refuse = [">", ";", "&", ","]
const args = [">>>>", ";;;;;;", "&&", ",,"]
function checkIllegal(refuse, args) {
let illegal = false;
refuse.forEach(e => {
args.forEach(string => {
if (string.includes(e)) illegal = true;
console.log("Blacklisted");
});
});
return illegal;
}
console.log(checkIllegal(refuse, args));
這仍然基于整個(gè)數(shù)組而不是每個(gè)字符串返回 true 或 false ,這是你需要的嗎?
否則我不會(huì)在函數(shù)內(nèi)部而是在函數(shù)外部循環(huán)遍歷 args,然后您可以檢查每個(gè)字符串。

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
https://jsfiddle.net/x24qnes6/
以下解決方案適用于單個(gè)字符和多個(gè)字符
function isRefused() {
const refuse = ">,>>,>,&,|,;,".split(',')
const args = "; ;; | > << >>".trim().split(/ +/g);
let illegal = false;
refuse.forEach(r => {
args.forEach(a => {
if (a.includes(r)) {
console.log(`${a} is blacklisted`)
illegal = true;
}
})
})
return illegal;
}
console.log(`Blacklisted? ${isRefused()}`)
你必須反過(guò)來(lái)檢查。args[j]
有沒(méi)有refused[i]
然而,更好的方法是為此使用正則表達(dá)式。
添加回答
舉報(bào)