【发布时间】:2019-06-22 07:11:14
【问题描述】:
我正在实现一个过滤器。它工作正常。问题是它只是匹配单个对象值而不是所有值匹配。
这里是匹配的意思,让它在值中包含任何单个字母
示例:这是我的对象
{name:"D",color:"Green",size:50}
如果我将过滤器对象传递为:
let filter1 = {color:"Blu",size:'50'};
目前我通过匹配大小得到单个结果。但是颜色完全不匹配。所以结果应该是空的。
如何对对象中的所有值进行mach,得到过滤后的值。
代码:
const nestedFilter = (targetArray, filters) => targetArray.filter(o => Object.keys(filters).find(k => filters[k].includes(o[k])));
let products = [
{name:"A",color:"Blue",size:70},
{name:"B",color:"Blue",size:60},
{name:"C",color:"Black",size:70},
{name:"D",color:"Green",size:50}
];
let filter1 = {color:"Blu",size:'50'};
console.log(nestedFilter(products, filter1));
【问题讨论】:
标签: javascript filter ecmascript-2016