我在react中有一个math.js函数。它的作用是使用变量中的值来计算公式,例如:
var variables = {'A': 1, 'B': 2}
var formula = 'A > 0 or B < 5'
math.evaluate(formula, variables) // this will return true
但是在比较字符串时,它会返回以下错误,
错误:无法将“ abc”转换为数字
var variables = {'A': 'abc'}
var formula = 'A == "abc"'
math.evaluate(formula, variables) // this will return Error: Cannot convert "abc" to a number
有人可以指导我该怎么做吗?我需要的是变量可以同时计算字符串和数字,谢谢。任何与此相似的问题也将不胜感激。我试图搜索,但收不到多少。
我尝试了以下操作,但不会覆盖该功能: https://github.com/josdejong/mathjs/issues/1051#issuecomment-369930811
更新 这就是我想要做的:
formula = ' A >= 2 and B == "year" '
variables = { A: 23, B: 'year' }
import { evaluate } from 'mathjs'
const MATH_EVAL = (formula, variables)=> {
var result = evaluate(formula, variables)
return result
}
export default MATH_EVAL
答案 0 :(得分:0)
使用issuecomment可以使我感到困惑吗?也许是错字?
var variables = {'A': 'abc'}
var formula = 'A == "abc"'
math.import({
equal: function (a, b) { return a === b }
}, {override: true})
console.log(math.evaluate(formula, variables))
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/6.0.2/math.js"></script>
答案 1 :(得分:0)
https://github.com/josdejong/mathjs/issues/1557
上述问题的答案在上述链接上。它说,我引用:
我为此创建了一个示例:examples/advanced/custom_relational_functions.js。您可以看看它是否有意义并解决您的问题?
主要区别在于,当您用新函数替换现有函数时,创建的函数不再更新其依赖项。我必须再考虑一下,也许我们可以在使用mathjs实例(而不是纯函数)时进行此工作。