Javascript 提供过滤数据作为D3.js中绘制线字符串的输入
我目前正在以这种方式过滤从csv文件获得的数据Javascript 提供过滤数据作为D3.js中绘制线字符串的输入,javascript,csv,d3.js,Javascript,Csv,D3.js,我目前正在以这种方式过滤从csv文件获得的数据 d3.csv("Viz2SampleData.csv", function(data43) { links = []; data43.filter(function(d,i) { if (d3.select("#select-owner").node().value == "ALL" && d3.select("#select-contractor").node().value != "ALL" &&
d3.csv("Viz2SampleData.csv", function(data43)
{
links = [];
data43.filter(function(d,i)
{
if (d3.select("#select-owner").node().value == "ALL" && d3.select("#select-contractor").node().value != "ALL" && d3.select("#select-launch").node().value == "ALL")
{
// for(var i=0, len=d.length-1; i<=len; i++)
// {
console.log(d.length)
if (d3.select("#select-contractor").node().value == d.CountryOfContractor)
{
return d;
}
]
})
}
})//closing for filter
不完全确定您尝试筛选的条件,但
filter
不会在适当的位置修改数组。它返回一个新的项目数组,筛选谓词的计算结果为true
。因此,如果您想获得过滤后的数据项,您需要将data43.filter()
的结果分配给某个对象;如果您不再关心其他结果,甚至可能再次data43
同样,对于常量,最好先计算它们的值,而不是在循环内部
这就是我认为您试图实现的目标:
d3.csv("Viz2SampleData.csv", function(data43) {
var links = [];
var selectOwner = d3.select("#select-owner").node().value;
var selectContractor = d3.select("#select-contractor").node().value;
data43 = data43.filter((d,i) => {
return (selectOwner === 'ALL') && (selectContractor === d.CountryOfContractor);
});
...
乔纳森,我对你感激不尽。这很有魅力:)
d3.csv("Viz2SampleData.csv", function(data43) {
var links = [];
var selectOwner = d3.select("#select-owner").node().value;
var selectContractor = d3.select("#select-contractor").node().value;
data43 = data43.filter((d,i) => {
return (selectOwner === 'ALL') && (selectContractor === d.CountryOfContractor);
});
...