Js for循环存储值

时间:2013-11-09 11:04:02

标签: javascript csv d3.js

对于我正在使用d3.js的项目我需要访问具有多个值的.csv文件,并且能够知道同一列中有多少行具有一个特定的文本字符串。 具体来说,我有一个具有“Sans”或“Serif”值的列,我尝试做的是创建一个for循环来获取有多少行具有这些值,但没有结果不幸。 我试图做的是在.csv load的回调函数中添加这个循环:

    var serif = 0,
    sans = 0;

for (var i = 0; i >= dataset.length; i++) 
    { 
    if (dataset.Grazie = "Sans")
    { return sans += 1; }
    else { return serif += 1; };
    };

    console.log(serif);
    console.log(sans);

但在控制台中,该值仍为0。 数据集中的列称为“Grazie”,该列上的唯一两个值是Sans或Serif。我试过了

任何帮助都将受到高度赞赏!谢谢!

编辑:感谢Lugia101101我找到了解决方案,这是:

for (var i = 0; i < dataset.length; i++) {
    if (dataset[i].Grazie == "Sans") { sans ++; }
    else { serif++; }
};

2 个答案:

答案 0 :(得分:0)

比较值时,您必须使用==而不是=(设置变量的值)。

if (dataset.Grazie = "Sans")应该阅读if (dataset.Grazie == "Sans")

正如@MarvinSmit所指出的,如果你想存储增量值,你不应该使用return

答案 1 :(得分:0)

var serif = 0,
    sans = 0;

for (var i = 0; i <= dataset.length; i++) { 
    if (dataset[i].Grazie == "\"Sans\"") {
        sans++;
    } else {
        serif++;
    }
}

console.log(serif);
console.log(sans);

您正在做的是返回一个值,该值用于退出函数return一个值。您还需要使用比较器(==)而不是分配值(=)。

编辑:您在声明后也添加了分号。切勿在大括号后添加分号。

编辑:似乎值等于0的另一个原因是for循环。
请记住将其视为:将i设置为零,循环直到i不小于或等于dataset.length,每个循环将i递增一个。