我有一个想要获取输入字符串的程序,在输入字符串中查找数学函数的名称,并输出包含在输入字符串中的数字,并对它们执行找到的操作。 如果我的输入如下:
1 a 2 b subtract
我希望它输出数字2。
这是我的代码:
function doArithment() {
"use strict";
var i = 0;
clearResults();
sepNsLs();
var found = false;
var q = 0;
var keys = Object.keys(operations);
while (q < keys.length) {
if (arrayses.letteros.indexOf(keys[q]) !== -1) {
found = true;
break;
} else if (arrayses.letteros.indexOf(keys[q]) === -1) {
q += 1;
}
}
if (found) {
var result = arrayses.numeros[0];
while (i < arrayses.numeros.length) {
if (i === 0) {
result = arrayses.numeros[0];
} else {
result = keys[q](result, arrayses.numeros[i]);
}
i += 1;
}
并且全局变量在函数上方声明,如此
var operations = {
add: function(a, b) {
"use strict";
return Number(a) + Number(b);
},
subtract: function(a, b) {
"use strict";
return a - b;
},
multiply: function(a, b) {
"use strict";
return a * b;
},
divide: function(a, b) {
"use strict";
return a / b;
}
};
现在,我唯一的问题是,当我尝试在此行上使用它来调用正确的操作时,Web控制台会说键[q]不是函数:
result = keys[q](result, arrayses.numeros[i]);
arrayses.letteros是我在输入字符串中分割的非数字数组,arrayses.numeros是数字数组。我是Javascript的新手,所以我不知道这是否是语法问题,或者在这个实例中Object.keys是不可用的,还是我需要找到一种方法将数据库中的键转换回原始变量以某种方式形成。