let products = [
{
id: 101,
brand_id: 1,
params: [1,2,3]
},
{
id: 102,
brand_id: 2,
params: [4,5]
},
{
id: 103,
brand_id: 3
}
];
//Объект поиска. Может как содержать свойсва brands и params, так нет.
let s = {
brands: [1,2],
params: [4]
}
//Вариант1
//Тут не получилось, хотел сразу в одном фильтре сделать.
let result = products.filter(product =>
(s.hasOwnProperty("brands") && s.brands.includes(product.brand_id)) &&
(s.hasOwnProperty("params") && product.hasOwnProperty("params"))
);
//Вариант2
//тут все работает
if(s.hasOwnProperty("brands") && s.brands.length > 0){
products = products.filter(product =>
s.brands.includes(product.brand_id)
);
}
//тут не работает, потому что у продукта массив params, а не int.
if(s.hasOwnProperty("params") && s.params.length > 0){
products = products.filter(product =>
product.hasOwnProperty("params") && s.params.includes(product.params)
);
}
//тут я не понял как переписать s.params.includes(product.params)
Помогите дописать скрипт.
1. Надо переписать s.params.includes(product.params), чтобы поиск был по внутреннему массиву.
2. В идеале, соединить все в один filter. Там где у меня не получилось (Вариант1)
Результат по
let s = {
brands: [1,2],
params: [4]
}
должен быть 102