Member 13010669 Ответов: 1

Есть ли какой-нибудь способ выполнять операции с массивами по порядку в javascript?


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]


Что я уже пробовал:

my code link :- jsfiddle.net/archan/z3mqnxz7

Patrice T

Вы только забыли сообщить нам результат, который вы получаете с eval.

1 Ответов

Рейтинг:
10

Karthik_Mahalingam

<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


Member 13010669

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

Karthik_Mahalingam

да, возможно, просто вызовите функцию..

Member 13010669

как я получаю значение, как электронная.г - демо-ВАР= документ.метода getElementById('новый').значение; и, что демо-значение. предположим, тип пользователя "10/6*8+7-9" Итак, это значение get initialize in getresult (""), как вы это сделали, так как я могу сделать это?

Karthik_Mahalingam

если я буду делать только все, что ты будешь делать,
братан, просто пройди через код и попробуй..
если вы не смогли после попытки, то я помогу..

Member 13010669

Извини, Брат!! не понимая, как это сделать. я так старался также пройти через всю программу, как вы сказали, но все еще не понимаю, как передать это строковое значение в getResult().
Я попробовал вот так, создал еще одну, и в этой функции я сохранил входное значение, теперь это значение пытается передать в getresult (), но все равно эта доза не работает.
функция equ_click()
{
var ans = document. getElementById ('new'). value;
}
и вне определения функции getresult() я объявил,
метод getresult(ВНС);

пожалуйста, помогите мне там, где я действительно не знаю, где я допустил ошибку . и спасибо за вашу потрясающую поддержку

Karthik_Mahalingam

что теперь является входной строкой ?

Member 13010669

как я уже говорил. последняя строка { console. log(getResult( "10 * 20 / 30 - 60 + 2")) }здесь вы инициализируете или передаете значение в getresult (""), поэтому здесь мне нужен пользовательский ввод.например, предположим, что я не хочу определять эти параметры или значения в программе. я хочу поместить пользовательский ввод в getResult("здесь пользовательский ввод, который вводится пользователем") вы получаете то, что я пытаюсь сказать?

Karthik_Mahalingam

вижу на кнопке событие click вызывается метод
getresult( document. getelementbyid('your formula textbox name'). value )

Member 13010669

Братан, серьезно, я нуб в javascript, но, пожалуйста, постарайся объяснить мне больше. извините еще раз но я поставил как вы сказали но все еще получаю ошибку я попробовал в событии

и Javascript файл ставится так, как он есть, вот как я пробовал в 1-й раз.
тогда во втором случае я поставил в JavaScript метод getresult файлом(документ.метода getElementById('новый').значение), где метод getresult(ехр){} создать и сохранить событие, как это, например onclick = "метод getresult()" братан я стараюсь изо всех сил, но я действительно нового в JavaScript, что зачем делать больше глупых ошибок Спасибо за ответ еще раз. :)

Karthik_Mahalingam

:( окей хост в скрипке и поделись ссылкой.

Member 13010669

https://jsfiddle.net/archan/gsnb9ron/

Karthik_Mahalingam

номер не печатается в текстовом поле..

Member 13010669

я не знаю, почему это не работает в fiddle, но я скопировал свой текущий рабочий код так, как он есть в fiddle. он работает Edit fiddle-JSFiddle[^]

Karthik_Mahalingam

хорошо я вставлю свой файл и проверю

Member 13010669

братан ты можешь мне помочь

Member 13010669

он показывает Uncaught SyntaxError: неожиданный конец ввода
в getResult (cal1. js:210)
в HTMLInputElement. onclick (cal1. html:30)

Karthik_Mahalingam

ладно.

Member 13010669

хорошо я буду ждать вашего ответа

Member 13010669

вы понимаете, в чем проблема?

Member 13010669

братан, ты там?

Karthik_Mahalingam

только что вошел.

Karthik_Mahalingam

проверьте эту ручку
http://codepen.io/anon/pen/jBWjZX

Member 13010669

Большое спасибо братан ты сделал мой день лучше Спасибо тебе большое

Karthik_Mahalingam

пожалуйста :)

Member 13010669

Ответ на пять звезд :) :)

Karthik_Mahalingam

Спасибо, но я бы рекомендовал вам исследовать больше и учиться..
всего наилучшего.

Member 13010669

Да конечно Картик я узнаю больше. а еще я глубоко изучил вашу программу. :)

Karthik_Mahalingam

:) хороший.