Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отфильтровать массив по объекту? (https://javascript.ru/forum/misc/80038-otfiltrovat-massiv-po-obektu.html)

Роман Андреевич 20.04.2020 18:12

Отфильтровать массив по объекту?
 
Коллеги доброго времени суток, подскажите как отфильтровать массив по объекту:

<code lang="javascript">

const arr = [
{
"id" : 1,
"city" : "Москва",
"title" : "ООО Мавзолей"
"type" : ["носки", "аромат"]
},
{
"id" : 2,
"city" : "Татарск",
"title" : "ООО Татарск Продакс"
"type" : ["коровы", "ЖБ плиты"]
}
];

const filter = {
city: `Татарск`,
title: ``,
type: `коровы`
};
</code>

соответственно нужно фильтровать arr по значениям filter. Заранее благодарю

рони 20.04.2020 18:45

Роман Андреевич,
const arr = [
{
"id" : 1,
"city" : "Москва",
"title" : "ООО Мавзолей",
"type" : ["носки", "аромат"]
},
{
"id" : 2,
"city" : "Татарск",
"title" : "ООО Татарск Продакс",
"type" : ["коровы", "ЖБ плиты"]
}
];

const filter = {id : 2,
city: `Татарск`,
title: ``,
type: `коровы`
};

const rezult = arr.filter(el => Object.keys(filter).every(key => {{
const str = filter[key];
if(!str) return true;
const obj = el[key];
if(!obj) return false;
if(Array.isArray(obj)) return obj.some(a => a.includes(str));
else return obj.toString().includes(str);

}}))
console.log(rezult)

Роман Андреевич 20.04.2020 18:54

рони, спасибо, помогло


Часовой пояс GMT +3, время: 09:11.