在Javascript中使用Switch语句

在Javascript中使用Switch语句,javascript,arrays,numbers,Javascript,Arrays,Numbers,好的,关于switch语句的大问题。我是JS的新手 我试图创建一个switch语句,它从输入框中获取输入,在输入字符串中的字母和数字之间查找“乘法”、“减法”、“加法”和“除法”,将非数字与数字分开,然后对数字集执行键入操作。例如,输入框可能如下所示: 1 a 2 b 3 c 4 multiply d 5 e for (; i < numberArray.length; i++ ) { if (i === 0) { sub = numberArray[0]

好的,关于switch语句的大问题。我是JS的新手

我试图创建一个switch语句,它从输入框中获取输入,在输入字符串中的字母和数字之间查找“乘法”、“减法”、“加法”和“除法”,将非数字与数字分开,然后对数字集执行键入操作。例如,输入框可能如下所示:

1 a 2 b 3 c 4 multiply d 5 e
for (; i < numberArray.length; i++ ) {
    if (i === 0) {
        sub = numberArray[0]
    } else {
        sub = sub - numberArray[i]
    }
}
到目前为止,我已经能够将数字与非数字分离到数组中,在上面输入的情况下,数组看起来是这样的:

numberArray === [1,2,3,4,5]
letterArray === [a,b,c,multiply,d,e]
我设置了一些函数来对数字数组进行加、减、乘、除,那么我如何使用switch语句在我的字母数组中找到其中一个可能的输入呢

另一件事,所有用于数学运算的循环都是相似的,例如,减法如下所示:

1 a 2 b 3 c 4 multiply d 5 e
for (; i < numberArray.length; i++ ) {
    if (i === 0) {
        sub = numberArray[0]
    } else {
        sub = sub - numberArray[i]
    }
}
(;i{ 如果(i==0){ sub=numberArray[0] }否则{ sub=子编号ray[i] } } 乘法是这样的:

   for (; i < numberArray.length; i++ ) {
    if (i === 0) {
        sub = numberArray[0];
    } else {
        sub = sub * numberArray[i];
    } 
}
(;i{ 如果(i==0){ sub=numberArray[0]; }否则{ sub=sub*numberArray[i]; } } 是否可以使用相同的switch语句将所有四个操作函数合并为一个函数,而不是针对每种情况调用每个单独的函数


编辑以解释我的字母和数字数组,还可以更改另一个完全无关主题的标题和标记。

比使用switch语句更好的方法是使用回调

函数reduce(数组、操作、初始值){
var结果=初始值;
//我们可以在不同的操作中重用相同的for循环逻辑
对于(var i=0;i
或通过使用一元数+隐式地,如:

return +a + +b; // to force the interpretter to interpret them as numbers
为什么其他操作没有导致问题?


因为
-
*
/
仅用于数字。因此,操作数被隐式解释为数字(这是使用
一元数+
进行加法的第二种解决方案)。

请解释这一点
1a2b3c4乘d5e
!!!!什么是
a
b
?@ibrahimmahrir在这里我会编辑它你仍然没有解释什么是
a
b
…嘿,对不起@ibrahimmahrir和RobG,我没有意识到我发布了这篇文章的标题,我不久前差点用在另一篇文章上,从那以后我一直在编辑it@Giverbud
a
b
的含义是什么。。。?请回答我的问题<代码>乘法
很清楚,但是
a
b
它们是什么,?变量?操作?他们到底是什么?对不起,我把这篇文章的标题弄错了(实际上这是一个标题,是从我不久前几乎写的一篇文章中保存下来的)。我不需要关于减少的帮助,但是回调做什么呢?请遵循此代码中的执行流程。该操作被抽象为另一个函数,并作为参数传入。那么您是说调用另一个函数吗?因为我所有的操作函数都非常相似,所以我有一种感觉,我可以在switch语句中使用它们之间的细微差别,而不是用4大块代码将它们设置为单独的函数。这部分是如何工作的?我必须定义op,对吗?在for循环中,(操作中的op)是什么意思?var=false;var-op;对于(op in operations){//如果(strings.indexOf(op)!=-1){//如果字符串包含该操作,则循环操作对象的键find=true;//那么我们找到了一个断点;//停止搜索}}@Giverbud您熟悉对象吗<代码>for(对象中的var prop)循环对象的键。在这种情况下,对象是
操作
,因此键是
添加
。对于所有这些操作,我们可以使用
**indexOf**
查看其中一个是否在数组
字符串中。不管我怎么想,谢谢你,你对我的帮助比你想象的要多!抱歉,还有一件事,您提供的add函数以这种方式输出数字:12345而不是15。它不是把数字加在一起,而是把它们列成一个字符串;你知道我能做些什么吗?@Giverbud
+
用于加法和字符串连接。因为这些数字是从数据环中提取的,所以它们基本上是字符串。因此,您需要隐式或显式地将这些字符串转换为数字。我会更新我的答案!