Однострочный калькулятор
Диалог на собеседовании: Напиши мне калькулятор. Простой калькулятор, когда на вход программе подается выражение, состоящее из 2 чисел, разделенные знаком '+', '-', '*', '/', которое нужно посчитать. У тебя полтора часа.
Цитата отсюда https://habrahabr.ru/post/320830/
Попробовала проверить смогу ли решить такое задание.
Смогла. За 20 минут. Без проблем, но с гуглом. Без гугла, конечно, было бы намного печальнее
Результат:
function calculator(str) {
var num1 = parseFloat(str);
var i = ~str.indexOf('+') || ~str.indexOf('-') || ~str.indexOf('*') || ~str.indexOf('/');
var sign = str[~i];
var num2 = parseFloat(str.substring(i + 1));
switch (sign) {
case '+':
return num1 + num2;
break;
case '-':
return num1 - num2;
break;
case '*':
return num1 * num2;
break;
case '/':
return num1 / num2;
break;
default:
return 'Я такого оператора не знаю'
}
}
calculator('7 + 7')
Что искала в гугле
1. Не могла вспомнить название функции parseInt, и только найдя её поняла, что мне нужно parseFloat, благо, они были рядом.
2. Почему-то решила, что это метод и вызывала его так str.parseFloat() вместо parseFloat(str)
3. Предположила, что indexOf сможет искать один из нескольких символов. Оказывается, он так не умеет. Это не искала, уже в коде увидела
4. Помнила, что проверка на indexOf это какой-то побитовый оператор, а какой пришлось искать
5. Подсматривала синтаксис switch