对于我正在使用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++; }
};
答案 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
递增一个。