【发布时间】:2021-09-03 06:48:58
【问题描述】:
我有一个系统,其中用户指定扩展名,如果允许给定扩展名,系统将返回 true,如果不允许,则返回 false。系统有一个预设的文件扩展名列表,用于确定是否允许和禁止给定的扩展名。
如果允许列表为空,则表示除禁止列表中的列表外,其他所有列表都允许。 如果禁止列表为空,则表示所有内容都被允许并且没有禁止扩展。 当两者都为空时,所有都被允许。
我试过了
var allowed = "";
var disallowed = "xlsx, docx, png";
function testAllowedOrNot(str) {
var disallowedArray = disallowed.split(",").map(function(ext) {
return ext.trim().toLowerCase()
});
var allowedArray = allowed.split(",").map(function(ext) {
return ext.trim().toLowerCase()
});
return allowedArray.includes(str) && !disallowedArray.includes(str)
}
console.log(testAllowedOrNot("csv")) //must be true
console.log(testAllowedOrNot("xlsx")) //must be false
console.log(testAllowedOrNot("ico")) //must be true
console.log(testAllowedOrNot("jpg")) //must be true
console.log(testAllowedOrNot("docx")) //must be false
但它返回的都是假的。如何更改我的代码以获得预期的输出。
【问题讨论】:
-
是的,因为您的允许列表为空
-
allowed为空,因此allowedArray.includes(str)将始终为false -
return (allowedArray.includes(str) || allowedArray.lenght === 0) && !disallowedArray.includes(str) -
为了更清楚,我已经修改了我的问题。我所期待的。
-
但它返回的都是假的。如何更改我的代码以获得预期的输出。
标签: javascript arrays string