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