Javascript 在D3.js中过滤CSV的多行,并在键盘输入时更新过滤器

Javascript 在D3.js中过滤CSV的多行,并在键盘输入时更新过滤器,javascript,csv,svg,d3.js,Javascript,Csv,Svg,D3.js,我在过滤csv数据和更新D3.js中的一些SVG时遇到了一些问题 问题1 加载时,我想从csv中筛选出多行。 我成功地加载了数据并只过滤了一行。然后,我对多行尝试了类似的方法,但没有成功 d3.csv("sample-data.csv", function(data){ date = data.filter(function(row) { return row['YYYYMMDD'] == '20100901'; }) period = data.filter(func

我在过滤
csv
数据和更新
D3.js
中的一些
SVG
时遇到了一些问题

问题1 加载时,我想从csv中筛选出多行。 我成功地加载了数据并只过滤了一行。然后,我对多行尝试了类似的方法,但没有成功

d3.csv("sample-data.csv", function(data){
  date = data.filter(function(row) {
      return row['YYYYMMDD'] == '20100901';
  })

  period = data.filter(function(row){
    for (var i = 1950; i < 2013; i++) {
      return row['YYYYMMDD'] == (i +"0901");
    } 
  });

  createVis();
}
请注意,我的csv最终将包含更多的数据

提前感谢你的帮助

  period = data.filter(function(row){
    for (var i = 1950; i < 2013; i++) {
      return row['YYYYMMDD'] == (i +"0901");
    } 
  });
要检查给定行的日期是否符合指定的标准,请执行以下操作:

   row.date.getDate() == 1   && row.getMonth() == 8 
&& 1950 <= row.getFullYear() && row.getFullYear() <= 2012
row.date.getDate()==1&&row.getMonth()==8
&& 1950 
要检查给定行的日期是否符合指定的标准,请执行以下操作:

   row.date.getDate() == 1   && row.getMonth() == 8 
&& 1950 <= row.getFullYear() && row.getFullYear() <= 2012
row.date.getDate()==1&&row.getMonth()==8

&&1950您当前没有的内容如何工作?第1期仅返回行['YYMMDD']=='19500901'处的值,而不是我需要的所有63行。您当前没有的内容如何工作?第1期仅返回行['YYMMDD']=='19500901'处的值,而不是我需要的所有63行。谢谢Adam。您的第一个解决方案有效。你建议的改进结构不符合我的需要。它返回19500901和20130901之间的所有行,而不是1950年和2013年之间年份的0901。有没有办法让这种改进的结构也起作用呢?约会会让你的生活更轻松;请参阅编辑后的答案。谢谢。这是一个很大的帮助。谢谢亚当。您的第一个解决方案有效。你建议的改进结构不符合我的需要。它返回19500901和20130901之间的所有行,而不是1950年和2013年之间年份的0901。有没有办法让这种改进的结构也起作用呢?约会会让你的生活更轻松;请参阅编辑后的答案。谢谢。这是一个很大的帮助。
  period = data.filter(function(row){
    var dateNum = +row['YYYYMMDD'];
    return 19500901 <= dateNum && dateNum <= 20130901;
  });
period.forEach(function(d){
  d.date = d3.format('%Y%m%d').parse(d.date);
})
   row.date.getDate() == 1   && row.getMonth() == 8 
&& 1950 <= row.getFullYear() && row.getFullYear() <= 2012