50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
module.exports = {
|
|
expr (expr) {
|
|
|
|
var chars = expr.split('');
|
|
var n = [], op = [], index = 0, oplast = true;
|
|
|
|
n[index] = '';
|
|
|
|
// Parse the expression
|
|
for (var c = 0; c < chars.length; c++) {
|
|
|
|
if (isNaN(parseInt(chars[c], 10)) && chars[c] !== '.' && !oplast) {
|
|
op[index] = chars[c];
|
|
index++;
|
|
n[index] = '';
|
|
oplast = true;
|
|
}
|
|
else {
|
|
n[index] += chars[c];
|
|
oplast = false;
|
|
}
|
|
}
|
|
|
|
// Calculate the expression
|
|
expr = parseFloat(n[0]);
|
|
for (var o = 0; o < op.length; o++) {
|
|
var num = parseFloat(n[o + 1]);
|
|
|
|
switch (op[o]) {
|
|
case '+':
|
|
expr = expr + num;
|
|
break;
|
|
case '-':
|
|
expr = expr - num;
|
|
break;
|
|
case '*':
|
|
expr = expr * num;
|
|
break;
|
|
case '/':
|
|
expr = expr / num;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return expr;
|
|
}
|
|
};
|