有没有办法按顺序在javascript中执行数组操作? [英] Is there any way to do array operations by order in javascript?

查看:69
本文介绍了有没有办法按顺序在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆