как сложить два числа в строковом виде
понимаю, вопрос может быть глупый, но как можно сложить 2 числа в строке:
let a = '3+10';
если складывать (или умножать на числа состоящие из одной цифры, то тогда можно использовать такой вариант..
function StrToNum(str){
let arr = str.split('');
let s;
for(let i = 0; i < 1; i++){
if (arr.includes('+')){
s = +str[0] + +str[2]
} else if(arr.includes('-')){
s = str[0] - str[2]
} else if(arr.includes('*')){
s = str[0] * str[2];
} else
s = str[0] / str[2];
}
return Math.round(s);
}
но если брать число состоящее из двух цифр, то этот вариант не подходит. помогите пожалуйста
Ответы (3 шт):
Автор решения: Great Tech
→ Ссылка
Разве это не подходящая задача для eval?)
let a = '3+10';
console.log(eval(a))
Автор решения: EzioMercer
→ Ссылка
You can use this way:
const input = document.querySelector('#expression');
const calculateBtn = document.querySelector('#calculate');
calculateBtn.addEventListener('click', () => {
const expression = input.value;
let [num1, sign, num2] = expression.split(/([\+\-\*\/])/);
[num1, num2] = [+num1, +num2];
let result = null;
switch (sign) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
console.log(result);
})
<label>Can calculate only first 2 numbers</label>
<br>
<input type="text" id="expression">
<button id="calculate">Calculate</button>
Explanation about how does work split in this example you can read in documentation
Автор решения: Sergey Glazirin
→ Ссылка
let a = '3+10';
let b = '3-10';
let c = '3/10';
let d = '3*10';
let e = '3h10';
const operators = {
'/': (a, b) => a / b,
'*': (a, b) => a * b,
'+': (a, b) => a + b,
'-': (a, b) => a - b,
};
function calc(str) {
const operator = str.replace(/[0-9]/g, '');
if (!operators[operator]) {
return `Недопустимый символ ${operator} перепроверьте введенную строку`;
}
return str
.split(operator)
.map((n) => +n)
.reduce(operators[operator]);
}
console.log(calc(a));
console.log(calc(b));
console.log(calc(c));
console.log(calc(d));
console.log(calc(e));