有没有办法按顺序在javascript中执行数组操作? [英] Is there any way to do array operations by order in javascript?
本文介绍了有没有办法按顺序在javascript中执行数组操作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码中有一个输入框。从输入字符串我得到运算符和操作数。
如果用户输入10 * 20/30 - 60 + 2,我得到的值是getElementById
所以现在的问题是,有没有办法做这个数组按顺序运作?
我期待这样的计算如下:
10 * 20是200
200/30是6.66
6.66 - 60是-53.33
-53.33 + 2是-51.33
所以-51.33必须是最终答案。
我已经通过eval()函数尝试了这个计算,但我得到的答案是错误的。我也想在同一输入框中显示该答案,请不要给我两个文本框的示例。
我已经尽可能地描述了我的问题。您可以在评论框中看到我的代码链接。
另一种解释方式,例如[10 * 2 - >答案 - > 回答/ 30 - >回答 - > 答案 - 60 - >回答 - > 回答+ 2 - >回答]
我尝试了什么:
我的代码链接: - jsfiddle.net/archan/z3mqnxz7
解决方案
< blockquote>
< pre> function getResult(exp){
exp = ' 1 *' + exp;
var parts = exp.split(' 跨度>);
var result,num = [],exp = []; var formu = [];
for ( var i = 0 ; i< parts.length; i ++){
var item = parts [i] .trim();
if ( isNaN (item))
exp.push(item);
else
num.push(item);
}
for ( var i = 0 ; i< num.length + 1 ; i ++){
var expr = exp [i - 1 ] == undefined ? ' ':exp [i - 1 ]。
var numr = num [i] == undefined ? ' ':num [i];
var str = expr + numr;
if (i == 0 )
str = ' 1'
result = result == undefined ? ' ':result;
result = eval (结果+ str);
}
返回结果;
}
console .log(getResult( 10 * 20/30 - 60 + 2)) // - 51.3333
I have one input-box in my code. From input string I get operators and operand. If user type "10 * 20 / 30 - 60 + 2" I get the value by getElementById So now the question is, is there any way to do this array operations in order? I'm expecting this calculation like: 10 * 20 is 200 200 / 30 is 6.66 6.66 - 60 is -53.33 -53.33 + 2 is -51.33 So -51.33 must be final answer. I have tried this calculation by eval() function but the answer I got is wrong. I also want to display that answer in same input box, please don't give me examples with two text-boxes. I have described my problem as well as I can. You can see my code link which is in comment box. Another way to explain e.g- ["10 * 2"-> answer-> "answer / 30"-> answer -> "answer - 60" -> answer -> "answer + 2" -> answer]
What I have tried:
my code link :- jsfiddle.net/archan/z3mqnxz7
解决方案
<pre> function getResult(exp) { exp = '1 * ' + exp; var parts = exp.split(' '); var result, num = [], exp = []; var formu = []; for (var i = 0; i < parts.length; i++) { var item = parts[i].trim(); if (isNaN(item)) exp.push(item); else num.push(item); } for (var i = 0; i < num.length + 1; i++) { var expr = exp[i - 1] == undefined ? '' : exp[i - 1]; var numr = num[i] == undefined ? '' : num[i]; var str = expr + numr; if (i == 0) str = '1' result = result == undefined ? '' : result; result = eval(result + str); } return result; } console.log(getResult( "10 * 20 / 30 - 60 + 2")) //- 51.3333
这篇关于有没有办法按顺序在javascript中执行数组操作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文