我正在使用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,则两个过滤器应该完全相同。谢谢您的宝贵时间!