0

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

    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++; }
};
4

2 回答 2

0

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

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

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

于 2013-11-09T11:10:58.873 回答
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

于 2013-11-09T11:12:30.623 回答