添加在Json对象中找到的数字

时间:2015-12-19 04:21:24

标签: javascript html arrays json loops

我有一个Json对象,我正在解析,然后与另一个数组进行比较,以找到它们匹配的位置。我有这个代码,

var gpaGrades = '{"A": 4, "A-": 3.67, "B+": 3.33, "B": 3, "B-": 2.67, "C+": 2.33, "C": 2, "C-": 1.67, "D+": 1.33, "D": 1, "D-": 0.67, "F":0}';
var letterGrades = ["A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "D-"]

var fallGrades = ["Fall 2015", "A-", "B+", "A", "B", "A"];
var springGrades = ["Spring 2016", "A+", "A+", "A-", "B+", "A"];

var gpa = JSON.parse(gpaGrades);
var sum = 0;
function getGrades(semester){
if(semester === "Fall 2015"){
   for (var i = 1; i < fallGrades.length; i++) { 
        for(var x = 0; x < letterGrades.length; x++){
            if (letterGrades[x].indexOf(fallGrades[i]) >= 0) {
                var getGPA = fallGrades[i];
                console.log(gpa[getGPA]);
            }   
        }
    }
}
}

这适用于我并提供与字母等级及其对应点值相匹配的所有值。问题是我需要获得gpa [getGPA]值的总和,然后计算该学期的GPA,然后我将除以长度。

我试过了

var sum += gpa[getGPA]; 

不知道为什么这不起作用,因为我看到一个类似的例子只有一组int正常工作。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

不要在循环中使用var,每次重新声明总和。在循环外使用var(仍应在函数内部工作)。然后在循环中使用sum += gpa[getGPA];

答案 1 :(得分:0)

    var getGPA =0.0;
    function getGrades(semester){
    if(semester === "Fall 2015"){
       for (var i = 1; i < fallGrades.length; i++) { 
            for(var x = 0; x < letterGrades.length; x++){
                if (letterGrades[x].indexOf(fallGrades[i]) >= 0) {
                  getGPA += fallGrades[i];

                }   
            }
        }
    }
}
console.log(gpa[getGPA]);

var sum += gpa[getGPA];不起作用的原因是每次你的for循环迭代它都会初始化新变量。我已搬到外面,所以它会初始化一次,并保留以前的值。

注意:使用parseFloat作为浮点值。