私は次の文字列を持っています: "10 + 10-5x2" これを変換する必要があります: 10上記の方程式。あなたの入力は*
の代わりにx
を処理する必要がある場合 は、このような何かがうまくいく文字列をjQueryを使用して適切な問題で計算する数値に変換する必要があります
答えて
を、私はevalのを使用して回答のトンを見るが、これはどのようにevalの作品に質問の多くのように思えます私はそれを説明する。 (また、evalを使用することは非常に悪い習慣です。)
まず、操作の順序に基づいて式ツリーを構築する必要があります。
eq_to_eval = "10+10-5*2"
operations = [
{
operation: '-',
func: (a, b) => a - b
},
{
operation: '+',
func: (a, b) => a + b
},
{
operation: 'x',
func: (a, b) => a * b
},
{
operation: '/',
func: (a, b) => a/b
}
]
function generateExpressionTree(eq) {
for (let op of operations) {
let op_index = eq.indexOf(op.operation)
if(op_index > -1) {
let left = eq.substring(0, op_index)
let right = eq.substring(op_index + 1)
return [generateExpressionTree(left), op, generateExpressionTree(right)]
}
}
return Number(eq) // if there are no operations, its just a number
}
これは基本的に、式を取るPEMDASにおける最初の操作の最初のインスタンスを見つけ、次いで[left, operation, right]
の形でツリーを作ります。ツリー内の最も高い項目が最初に評価されるべきであるため、操作の順序は実際に反転されていることに注意してください。彼らは操作がないまで、左と右の部分を再帰的に評価します。
ここで実際にこれを計算して数値に変換する必要があります。
function evaluateExpressionTree(tree) {
if (typeof tree == 'number') {
return tree
}
return tree[1].func(evaluateExpressionTree(tree[0]), evaluateExpressionTree(tree[2]))
}
これは、ツリー内の各アイテムを経て、左側、右側を評価して、オペレータを適用することによって、それらのそれぞれを評価します。
tr = generateExpressionTree(eq_to_eval)
console.log(evaluateExpressionTree(tr))
# 10
EDIT:
最後に、我々がコードをテストすることができます彼らは、私が思うのjQueryについての質問のタイトルを編集しました。
meyer9説明に感謝します。 forループを使って解決しようとしていて、コードが本当に厄介になっていました。とても有難い! –
jQuery.globalEval('var z=10+10-5*2');
ありがとう:
jQuery.globalEval('var z=10+10-5x2'.replace(/x/g,'*'));
結果のいずれかのは、z
あなたにあります使用できるだけ '
var string = "10+10-5*2";
var ans = eval(string);
evalの」
'x'は文字です。 '*'は掛け算されます。 – PHPglue
はこれを試してみてください:)
const str = '10+10-5x2';
console.log(eval(str.replace(/x/,'*')));
グローバルな交換が必要です。 – PHPglue
- 1. 数値を文字列要素に変換する問題
- 2. 夕食費計算の問題文字列を整数に変換する
- 3. テキストボックス値と計算値で計算するのに問題があります
- 4. jQueryを使用して変数を減算するのに問題がある
- 5. 私はASCII文字列に変換する必要がある文字列を、どのように変換する必要がありますか?
- 6. jqueryの配列値をjsonに変換する必要があります
- 7. Pythonを使用してリスト内の整数から文字列への変換に問題があります
- 8. Rで計算を作成する必要がありますが、数字が
- 9. 文字列を適切なデータ型に変換します
- 10. 文字列リストを適切なリストに変換するには?
- 11. リスト<WebElement>を文字列の文字列配列に変換する必要があります
- 12. シェルスクリプトで文字列を10進数に変換して計算する
- 13. 文字列のカンマ区切り数字を数値ベクトルに変換する
- 14. Rubyハッシュ値は配列です。文字列に変換する必要があります
- 15. 計算に問題があります
- 16. EditTextを文字列に変換して変換とエラーを計算する
- 17. 数値の文字列をコンマ区切りの値に変換します。
- 18. TypeScriptで戻り値の型として文字列リテラルを使用する必要がありますか?
- 19. IMemoryCacheに問題があります。文字列に変換できません。
- 20. JQuery、JSON文字列を配列に分割する必要があります
- 21. 文字列をcharArrayに変換する必要はありますか?
- 22. JS:文字列を直接文字列に変換する必要があります。
- 23. コンパイルの問題 - 文字列を返す必要があります
- 24. DataTableの戻り値の型を文字列に変換する必要があります
- 25. 文字列定数または文字列リテラルを使用する必要があります
- 26. SASの列合計を計算し、別の列を計算するために入力として使用する必要があります。
- 27. は、変換と計算距離を助ける必要があります
- 28. CSVファイルに適切にカンマを含む文字列をエクスポートする必要があります
- 29. Excelから価格を入手し、POIを使用して値を計算する必要があります
- 30. 区切り文字なしの文字列をカンマ区切りの文字列に変換する方法は?
問題を解決する方法について、他の人にあなたの問題全体を尋ねるのではなく、混乱に関する質問をしてください。 – Taplar
大変申し訳ありません。 forループを使用する代わりに、より効率的に解決する方法を探していました。 –