1.需求与效果
2.功能代码
// 定义一个函数discern
const discern = () => {// 定义变量paramsList和paramslet 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);
};