0

我试图做一个函数,我输入两个不同的代数表达式并有一个变量列表将它们更改为数字。但是,如果变量之间没有运算符,它就无法识别变量,就像在这种情况下:

let exp1 = 'x*y'
let exp2 = 'xy'
const variableList = {
x: 1.00
y: 1.50
}
mathjs.evaluate(exp1, variableList) // 1.5
mathjs.evaluate(exp2, variableList) // Error
return mathjs.equal(exp1, exp2)

有没有办法让它在没有运算符的情况下连续理解两个变量?也应该可以编写单位,例如,如果可能的话,我不希望“cups”变成“c* u * p * s”。

4

1 回答 1

0

不确定这是否适合您,但您可以导入自己的辅助函数来评估表达式,例如"xy"

math.import({
  xy: function(exp, scope) {
    exp = exp.split('').join('*')
    return math.evaluate(exp, scope)
  }
})

let exp1 = 'x*y'
let exp2 = 'xy'

const variableList = {
  x: 1.00,
  y: 1.50
}

let result1 = math.evaluate(exp1, variableList)
let result2 = math.xy(exp2, variableList)

console.log(result1) // 1.5
console.log(result2) // 1.5
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/10.0.0/math.js"></script>

于 2021-12-22T00:20:18.143 回答