首页 > 解决方案 > 如何拆分字符串数组,将字符串数字解析为整数并将它们添加到 for 循环中

问题描述

  1. 我有一个字符串数组(以分数形式写的分数),例如[“40/60”,“30/40”,...]。分数代表用户对问题的回答,数组是给定类别的所有回答。

  2. 我想拆分字符串,将每个字符串解析为一个整数,然后在 for 循环中添加每个左侧分数以获得用户的总类别分数,并添加每个右侧分数以获得可能的总最大分数。

我已经尝试了下面的代码并且正在返回 NaN。

################
var scoreArray = ["45/60", "60/60", "40/40","30/40", "15/20", "30/40", "30/60", "20/40"];

var i;

var myCategoryScore;

var maxCategoryScore;
################

for(i=0; i < scoreArray.length;i++){

    var splitScore = scoreArray[i].split("/");
    console.log(splitScore);

    myQuestionScore = parseInt(splitScore[0], 10);
    myCategoryScore = myCategoryScore + myQuestionScore;
    console.log(myCategoryScore);

    maxQuestionScore = parseInt(splitScore[1]);
    maxCategoryScore = maxCategoryScore + maxQuestionScore; 
    console.log(maxCategoryScore);
}

打印的结果是:

数组 ["45", "60"]

数组 ["60", "60"]

数组 ["40", "40"]

ETC

然而,当只是自己打印出解析的整数时,它们已经被正确解析了......

for(i=0; i<scoreArray.length;i++){

   var splitScore = scoreArray[i].split("/");
   console.log(splitScore);

   myQuestionScore = parseInt(splitScore[0], 10);
   console.log(myQuestionScore);

   maxQuestionScore = parseInt(splitScore[1]);
   console.log(maxQuestionScore);
}

这导致..

数组 ["45", "60"]

45

60

数组 ["60", "60"]

60

60

数组 ["40", "40"]

40

40

ETC...

那么为什么我不能把总数加在一起呢?我如何解决它?是因为范围吗?

谢谢!

标签: javascriptarraysfor-loopsplitparseint

解决方案


myCategoryScore永远不会被初始化。

myCategoryScore = myCategoryScore + myQuestionScore;会提供undefined + 42 //NaN

同样对于maxCategoryScore

如何重现您的错误:

var UndefinedValue;

console.log(UndefinedValue);

console.log(UndefinedValue + 42);

初始化您的变量,以便您可以在数学运算中使用它们:

var scoreArray = ["45/60", "60/60", "40/40","30/40", "15/20", "30/40", "30/60", "20/40"];

var i;
// initialize this one
var myCategoryScore = 0;
// and this one
var maxCategoryScore = 0;


for(i=0; i < scoreArray.length;i++){

    var splitScore = scoreArray[i].split("/");
    console.log(splitScore);

    myQuestionScore = parseInt(splitScore[0], 10);
    myCategoryScore = myCategoryScore + myQuestionScore;
    console.log(myCategoryScore);

    maxQuestionScore = parseInt(splitScore[1]);
    maxCategoryScore = maxCategoryScore + maxQuestionScore; 
    console.log(maxCategoryScore);
}


推荐阅读