Math.js Ошибка: невозможно преобразовать «abc» в число - PullRequest
0 голосов
/ 04 июля 2019

У меня есть функция 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

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

https://github.com/josdejong/mathjs/issues/1557

Ответ на поставленный выше вопрос находится по вышеуказанной ссылке. Это говорит и я цитирую:

Я создал для этого пример: examples / advanced / custom_relational_functions.js . Можете ли вы взглянуть на это и посмотреть, имеет ли это смысл и решает ли вашу проблему?

Основное отличие состоит в том, что созданные функции больше не обновляют свои зависимости, когда вы заменяете существующую функцию новой. Я должен еще немного подумать, может быть, мы сможем сделать это при работе с экземпляром mathjs (вместо чистых функций).

0 голосов
/ 06 июля 2019

Я немного запутался, так как это работает с использованием вопроса о комментариях? Может быть, опечатка?

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>
...