Javascript 如何实现使用指定选项过滤商品的方法?

Javascript 如何实现使用指定选项过滤商品的方法?,javascript,ecmascript-6,Javascript,Ecmascript 6,例如,该方法将包含用于搜索{name:“item 2”,price:“=2”}的参数的options对象作为参数。每个选项都是可选的。该方法必须返回商品的过滤数组。筛选依据(选项)。必需,必须通过分解结构接收来自此对象的参数。 我以这种方式实现了此方法,但它是错误的: filterProductBy(数据集、过滤器、选项){ this.options=选项; 让FilterdFirst=dataset.map(x=>{ for(让子对象名称位于x中){ 设inner=x[子对象名称]; 返回内

例如,该方法将包含用于搜索{name:“item 2”,price:“=2”}的参数的options对象作为参数。每个选项都是可选的。该方法必须返回商品的过滤数组。筛选依据(选项)。必需,必须通过分解结构接收来自此对象的参数。

我以这种方式实现了此方法,但它是错误的:
filterProductBy(数据集、过滤器、选项){
this.options=选项;
让FilterdFirst=dataset.map(x=>{
for(让子对象名称位于x中){
设inner=x[子对象名称];
返回内部;
}
});
让过滤=[];
用于(让道具插入过滤器){
控制台日志(道具);
让filteredinst=filteredfirst.filter(x=>filters[prop](x[prop]);
console.log(filterdinst);
filtered=filtered.concat(filteredinst);
}
返回过滤;
}
console.log(shop.filterProductBy({
名称:“产品”,
计数:“>=10”,
价格:“>=200”

}));根据你的问题,这是我能得到的最接近的答案。我猜,
filterProductBy
应该只接受选项,并且应该过滤商店拥有的产品

它似乎执行您要求的操作,但当前仅适用于过滤器>=和过滤器字符串.indexOf('>=')>-1? (数字、金额)=>数字>=金额: (数字、金额)=>数字名称===未定义的| | product.name==名称) .filter(产品=>价格===未定义|| getEvaluationFunction(价格)(product.price,price.match(/(\d+/)[0]) ) .filter(产品=>计数===未定义|| getEvaluationFunction(count)(product.count,count.match(/(\d+/)[0]) ) } } 施工车间=新车间(); //创造产品 shop.addProduct(新产品(“产品1”,1,2000)); 添加产品(新产品(“产品2”,1700)); 添加产品(新产品(“产品3”,2800)); 添加产品(新产品(“产品4”,3,1000)); console.log(shop.filterProductBy({ 价格:“>=1000”, 计数:“>=2”,
}));
It's Error是什么意思?错误:“TypeError:dataset.map不是函数”,据我所知,错误的方法是使用对象调用方法
shop.filterProductBy
。对象没有任何方法
map
。Map是一个数组方法。数据集应该是什么?当然,它始终是商店拥有的产品?
shop.filterProductBy
需要三个参数,但您用一个参数来调用它。这三个参数是什么?在问题文本中,我了解了一个参数
选项