1.需求与效果
2.功能代码
// 定义一个函数discern
const discern = () => {
// 定义变量paramsList和params
let paramsList;
let params = {};
// 将htmlText.value按换行符分割,得到一个数组,每个元素是一行文本
paramsList = htmlText.value.split('\n');
// 定义两个数组,object包含了我们想要获取的信息的名称,discernList包含了每种信息可能对应的关键字
let object = ['companyName', 'taxpayerNumber', 'address', 'phone', 'bank', 'account', 'email'];
let discernList = [
['名称', '公司名称', '企业名称', '公司名'],
['税号', '纳税人识别号', '统一信用代码'],
['单位地址', '公司地址', '企业地址', '地址'],
['电话', '电话号码', '联系方式', '手机号'],
['开户银行', '银行名称', '开户行'],
['银行账户', '银行账号', '账号', '账户'],
['邮箱','电子邮箱']
];
// 遍历paramsList中的每一行文本
paramsList.forEach((el, i) => {
// 将当前行按冒号分割,得到一个数组elList,第一个元素是关键字,第二个元素是值
let elList = el.replace(':', ':').split(':');
// 去除值中的所有空格
elList[1] = elList[1]?.replace(/\s+/g, '');
// 遍历discernList中的每个数组
discernList.forEach((item, index) => {
// 遍历当前数组中的每个关键字
item.forEach((ele) => {
// 如果当前行的关键字包含当前关键字
if (elList[0].indexOf(ele) !== -1) {
// 如果当前关键字是"地址",并且当前行的关键字不包含"邮箱"
if (ele == '地址' && elList[0].indexOf('邮箱') == -1) {
// 将值存储在params对象中,属性名是object数组中对应的元素
params[object[index]] = elList[1];
} else if (ele != '地址') { // 如果当前关键字不是"地址"
// 将值存储在params对象中,属性名是object数组中对应的元素
params[object[index]] = elList[1];
}
}
});
});
});
// 将params对象合并到invoiceHeaderForm.value对象中
Object.assign(invoiceHeaderForm.value, params);
};