我试图用d3加载一个csv文件,并试图为显式二维数组(名为iris_2)创建一个嵌入式替换。当使用underscore.js(使用_.isEqual)比较两个二维数组时,我注意到它们不相等(check out the Codepen.io code)。更奇怪的是,如果我使用_.isEqual在检查html页面时比较它们,它说它们是平等的。阵列不等于
这里的D3代码:
var iris = [];
d3.csv("data/iris.csv", function(mydata) {
mydata.forEach(function(d) {
d["sepal_length"] = +d["sepal_length"];
d["sepal_width"] = +d["sepal_width"];
d["petal_length"] = +d["petal_length"];
d["petal_width"] = +d["petal_width"];
iris.push([d["sepal_length"], d["sepal_width"], d["petal_length"], d["petal_width"], d["species"]]);
});
});
下面是其标题iris.csv文件的前五个数据线,我想与D3阅读:
sepal_length,sepal_width,petal_length,petal_width,species
5.1,3.5,1.4,0.2,setosa
4.9,3,1.4,0.2,setosa
4.7,3.2,1.3,0.2,setosa
4.6,3.1,1.5,0.2,setosa
5,3.6,1.4,0.2,setosa
...
这里的第一个五年“显式”2D阵列的行:
var iris_2 = [
[5.1, 3.5, 1.4, 0.2, 'setosa'],
[4.9, 3.0, 1.4, 0.2, 'setosa'],
[4.7, 3.2, 1.3, 0.2, 'setosa'],
[4.6, 3.1, 1.5, 0.2, 'setosa'],
[5.0, 3.6, 1.4, 0.2, 'setosa'] ...
这是我使用com的underscore.js代码削两个数组:
_.isEqual(iris, iris_2);
这将返回的HTML代码错误(见上Codepen链接),但对于Chrome的HTML检查控制台如此。
而不是使用'+ d的[...]'尝试使用'1 * d [...]'。这可能有助于消除将数据解释为字符串的可能性。 – Manngo
@Manngo - OP代码中的'+'(一元加号)已经转换为数字。 – nnnnnn
@nnnnnn你说得对。 – Manngo