Как отфильтровать массив по условию?
Нужно отфильтровать массив arr1:
const arr1 = [
{name: 'Вася', surname: 'Пупкин', age: 22},
{name: 'Петя', surname: 'Залупкин', age: 23},
{name: 'Ваня', surname: 'Быков', age: 22},
{name: 'Володя', surname: 'Пупкин', age: 21},
]
const obj = {name: 'Петя', surname: 'Пупкин', age: 21}
const arr2 = arr1.filter(item => {
//Здесь код
}
console.log(arr2)
Чтобы результат был таков:
arr2 = [
{name: 'Вася', surname: 'Пупкин', age: 22},
{name: 'Петя', surname: 'Залупкин', age: 23},
{name: 'Володя', surname: 'Пупкин', age: 21}
]
На словах: у первого элемента совпадает фамилия - оставляем, у второго совпадает имя - оставляем, у третьего ничего не совпадает - убираем, у четвертого совпадает возраст - оставляем.
Ответы (2 шт):
Автор решения: entithat
→ Ссылка
const arr1 = [
{ name: 'Вася', surname: 'Пупкин', age: 22 },
{ name: 'Петя', surname: 'Залупкин', age: 23 },
{ name: 'Ваня', surname: 'Быков', age: 22 },
{ name: 'Володя', surname: 'Пупкин', age: 21 },
];
const obj = { name: 'Петя', surname: 'Пупкин', age: 21 };
const ent = Object.entries(obj);
console.log(arr1.filter(item => ent.some(e => e[1] === item[e[0]])));
Автор решения: Qwertiy
→ Ссылка
const arr1 = [
{ name: 'Вася', surname: 'Пупкин', age: 22 },
{ name: 'Петя', surname: 'Залупкин', age: 23 },
{ name: 'Ваня', surname: 'Быков', age: 22 },
{ name: 'Володя', surname: 'Пупкин', age: 21 },
]
const obj = {name: 'Петя', surname: 'Пупкин', age: 21}
const keys = Object.keys(obj)
const arr2 = arr1.filter(x => keys.some(k => x[k] === obj[k]))
console.log(arr2)
.as-console-wrapper.as-console-wrapper { max-height: 100vh }