2 回答
TA贡献1809条经验 获得超8个赞
我会在函数外构建refuse和数组并将它们作为参数传递。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));
这仍然基于整个数组而不是每个字符串返回 true 或 false ,这是你需要的吗?
否则我不会在函数内部而是在函数外部循环遍历 args,然后您可以检查每个字符串。
TA贡献1943条经验 获得超7个赞
https://jsfiddle.net/x24qnes6/
以下解决方案适用于单个字符和多个字符
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()}`)
你必须反过来检查。args[j]
有没有refused[i]
然而,更好的方法是为此使用正则表达式。
添加回答
举报