Фильтр массива объектов в javascript, если хотя бы одно свойство из объекта равно свойству из другого объекта массива

Прошу помощи в сабже. Пример массива:

arr = [
        {name: 'Ivan', surname: 'Ivanov'},
        {name: 'Anton', surname: 'Ivanov'},
        {name: 'Ivan', surname: 'Petrov'}
      ];

Отфильтровать по свойству name: 'Ivan' и вывести:

arr = [
        {name: 'Ivan', surname: 'Ivanov'},
        {name: 'Anton', surname: 'Ivanov'},
      ];

Прошу не готовое решение, а направить в нужное русло. Спасибо.


Ответы (1 шт):

Автор решения: Igor

arr = [
  {name: 'Ivan', surname: 'Ivanov'},
  {name: 'Anton', surname: 'Ivanov'},
  {name: 'Ivan', surname: 'Petrov'}
];

function filterByProp(arr, prop) {
  var seen = {};
  var result = arr.filter(item => {
    if (seen[item[prop]]) {
      return false;
    } else {
      seen[item[prop]] = true;
      return true;
    }
  });
  return result;
}

console.log(filterByProp(arr, "name"));

→ Ссылка