Как объединить числа из пользовательского ввода
Отслеживать ввод пользователя для объединения чисел просто.
Вам нужно будет сделать 2 вещи:
- Отслеживайте введенные номера, разбивайте их и сохраняйте где-нибудь при вводе оператора
- Отслеживайте все введенные номера и операторов
let arr = []; // contains your list of numbers and operators in the order they were entered
let str = ""; // the current number string
function printNum(e) {
...// your own code logic
if (e.target.value === "+" || e.target.value === "-" || ...) { // all the math operators here OR replace with regex matching
// for OP: Add logic to handle accidentally pressing >1 operator in succession
arr.push(str);
str = "";
arr.push(e.target.value)
} else {
str += e.target.value;
}
}
В итоге вы получите массив, который выглядит следующим образом:
arr = ["12","+","15","*", ...]
Расчет значения массива может быть довольно сложным и будет хорошим упражнением.
Более полный ответ
Моя основная задача состояла в том, чтобы предоставить вам ясное и простое решение, не добавляя слишком много к вашему коду. Перед ответом, пожалуйста, обратите внимание на риски:
Предупреждение. Выполнение JavaScript из строки представляет собой огромный риск для безопасности. Для плохого актера слишком легко запустить произвольный код, когда вы используете eval (). См. Никогда не используйте eval () !, ниже.
Ответ:
Простой (и ленивый способ) - поддерживать строку, которая отслеживает вводимые пользователем данные и выполняет фактическую расчеты с eval
.
Это не учитывает неправильные записи пользователя. Например. 1 + 2 ++ 3 + 5 +
Basi c использование:
let str = "1+3+5";
let ans = eval(str); // ans is now "6"
Здесь вы видите, что строка с правильно сформированными математическими операторами будет eval
к окончательному результату уравнения.
Если вам удобен такой подход, вы можете просто сделать:
let str = ""
function printNum(e) {
...// your own code logic
str += e.target.value;
}
Я опустил полный рабочий пример на тот случай, если вы хотите поработать над Остальная часть проблемы самостоятельно. Если вы хотите получить справку, см. эту ручку .