前端问题思路

1.将计算公式中的字母code替换为code对应的codeName

// 例:
// 公式内容:A - B * C
// code对照表:[{code:'A',codeName:'字母A的codeName'},{code:'B',codeName:'字母B'},{code:'C',codeName:'字母C'}]
// 解:1.创建字母映射表
//	   2.提取公式中所有的code
//     3.遍历所有提取到的code, 依次将公式字符串中的code位置的值替换为对应的codeName
//     (注:codeName可能包含code本身,因此查找code的位置要设置查找的起点index)

// 例子中的code假设都是单个英文大写字母
// 替换字符串指定位置的值
const replaceStr = (str, index, char) =>{
	return str.substring(0, index) + char + str.substring(index + 1)
}
const codeTable = [{code:'A',codeName:'字母A的codeName'},{code:'B',codeName:'字母B'},{code:'C',codeName:'字母C'}]
let formulaStr = 'A - B * C'
let codeMap = {}
codeTable.forEach(item=>{
	codeMap[item.code] = item.codeName
})
const matchCodes= [...formulaStr.matchAll(/([A-Z])/g)].map(code=>{
	return code[0]
})
let startSearchIndex = 0
for (let i = 0; i < matchCodes.length; i++) {
	const code = matchCodes[i]
	const codeMatchIndex = formulaStr.indexOf(code, startSearchIndex)
    formulaStr = replaceStr(formulaStr, codeMatchIndex, codeMap[code])
    startSearchIndex = codeMatchIndex + codeMap[code].length - code.length + 1
}
console.log(formulaStr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值