Например, метод принимает в качестве аргумента объект параметров, который содержит параметры для поиска {name: "item 2", price: "<= 1000", count: "> = 2"}, каждый из параметров является необязательным,Метод должен возвращать отфильтрованный массив с товарами.filter By (опции). Обязательно, параметры от этого объекта должны быть получены через деструктуризацию.
Я реализовал этот метод таким образом, но это неправильно:
filterProductBy(dataset, filters, options) {
this.options = options;
let filtredFirst = dataset.map(x => {
for (let subObjectName in x) {
let inner = x[subObjectName];
return inner;
}
});
let filtred = [];
for (let prop in filtres) {
console.log(prop);
let filtredInst = filtredFirst.filter(x => filters[prop](x[prop]));
console.log(filtredInst);
filtred = filtred.concat(filtredInst);
}
return filtred;
}
console.log(shop.filterProductBy({
name: "product",
count: ">=10",
price: ">=200"
}));
Подскажите, как правильно его реализовать
Весь мой код
//Product Creation Class
class Product {
constructor(name, count, price) {
this.name = name;
this.count = count;
this.price = price;
}
}
//Сlass where products are recorded
class Shop {
constructor(products) {
this.products = [];
}
//method for adding a product
addProduct(newProduct) {
this.products.push(newProduct);
}
filterProductBy(dataset, filters, options) {
this.options = options;
let filtredFirst = dataset.map(x => {
for (let subObjectName in x) {
let inner = x[subObjectName];
return inner;
}
});
let filtred = [];
for (let prop in filtres) {
console.log(prop);
let filtredInst = filtredFirst.filter(x => filters[prop](x[prop]));
console.log(filtredInst);
filtred = filtred.concat(filtredInst);
}
return filtred;
}
}
const shop = new Shop();
// create products
shop.addProduct(new Product("product 1", 1, 2000));
shop.addProduct(new Product("product 2", 1, 700));
shop.addProduct(new Product("product 3", 2, 800));
shop.addProduct(new Product("product 4", 3, 1000));
console.log(shop.filterProductBy({
name: "product",
count: ">=10",
price: ">=200"
}));