let arr = ['000 Version表-9月.XLSX',
'实际销量表-FY22截至9月底销量.XLSX',
'入库记录表-20220914.XLSX',
'Rolling Forecast-20220901.xlsx',
'当前财年Allocation表-202210.xlsx',
'下个财年Allocation表-FY23.xlsx',
'当前财年财务Demand数据表-FY22.xlsx',
'下个财年财务Demand数据表-FY23.xlsx',
'上个财年底库存结余数据表-0930.XLSX',
'上月底库存结余数据表.XLSX']
需求:点击计算做必传的检验,,由于不是form表单写,所以只能做数组是否包含某个字符串。
思路:要做数组包含字符串判断,其实就是做字符串中包含部分字符串判断,(我们没有全等,是因为表单的名字不确定,所以只能还包含判断)
//推荐使用
//indexOf() 方法:返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。
var str = "LiHeErNAN";
console.log(str.indexOf("A") != -1 ); // true
console.log(str.indexOf("Q") != -1 ); // false
// search() 方法:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。
var str = "LiHeErNAN";
console.log(str.search("A") != -1 ); // true
//match() 方法:在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
var str = "abcd";
var reg = RegExp(/d/);
if(str.match(reg)){
// 包含
}
//test() 方法:用于检索字符串中指定的值。返回 true 或 false。
var str = "abcd";
var reg = RegExp(/d/);
console.log(reg.test(str)); // true
//exec() 方法:用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配者,则返回值为 null。
var str = "abcd";
var reg = RegExp(/d/);
if(reg.exec(str)){
// 包含
}
以上的方法都是RegExp对象的方法。
要做数组数据处理一定会想到遍历,for是个很好的工具不要排斥for,活用for功能,不要以为追求es6。因为是9个需要判断地方所以抽离成公共方法
见代码
// 数组是否包含部分字符串
function isStr(arr, str) {
let n = arr.length;
for (let i = 0; i < n; i++) {
if (arr[i].indexOf(str) != -1) {
return true;
}
}
return false;
}
let val;
val =
isStr(arr, '000 Version表') &&
isStr(arr, '实际销量表') &&
isStr(arr, '入库记录表') &&
isStr(arr, 'Rolling Forecast') &&
isStr(arr, '当前财年Allocation表') &&
isStr(arr, '当前财年财务Demand数据表') &&
isStr(arr, '下个财年财务Demand数据表') &&
isStr(arr, '上个财年底库存结余数据表') &&
isStr(arr, '上月底库存结余数据表');
//只要有一个不满足val就为false
if (!val) {
message.error('缺少文件,无法计算!请上传对应文件!');
return false;
}
前端做了校验后端也需要做。
版权声明:本文为weixin_46600931原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。