JavaScript过滤器返回null

时间:2018-11-30 03:05:19

标签: javascript filter

我正在使用javascript的表,具有多个搜索条件过滤条件= [a,b,c],是从html的文本字段中获取的。以下代码按预期返回经过过滤的结果:

data = [{a: Foo, b: Bar, c:Blah}, {a: Blah, b: Blah, c:Blah}, ...]


var filteredData = Data;

var aVal = d3.select('#a').node().value;

filteredData = filteredData.filter(Report => Report.a === aVal);

但是当我尝试使用以下方法遍历所有条件时:

  var aVal = d3.select('#a').node().value;
  var bVal = d3.select('#b').node().value;
  var cVal = d3.select('#c').node().value;
  var filters = {"a": aVal, "b": bVal, "c": cVal};

  Object.entries(filters).forEach(([key, value]) => {
    // console.log(MULTIPLE LOGS >> SEE BELOW)
    if (value != "") {      
      filteredData = filteredData.filter(Report => Report.key === value);
    }
  });

我在控制台中得到以下结果:

  

console.log(filteredData)返回:[{{a:Foo,b:Bar,c:Blah},{a:Foo,b:Bar,c:Blah},...]:

     

console.log(filteredData [0])返回{a:Foo,b:Bar,c:Blah}

     

console.log(filteredData [0] .a)返回“ Foo”

     

console.log(键,值);返回“ a”,“ Foo”

     

console.log(filteredData [0] .value)返回NULL

     

console.log(filters)返回{“ Foo”,“”,“”}

     

(预期)

     

console.log(filteredData [0] .key)返回NULL

我知道我可以使用OR语句过滤表并获取所需的结果,但是据我了解,如果我输入的全部是aVal,则两个过滤器应该完全相同。谢谢您的宝贵时间!

0 个答案:

没有答案