@zakharoffam
Начинающий

Как исключить из многомерного массива повторяющиеся элементы?

Никак до меня не дойдет какими методами можно из вот такого массива:
const allActions = [
  {TERBANK: 'AB', ORDER_NUMBER: 10, ACTION_NAME: 'В очередь', SERVICE: 'Наш сервис'},
  {TERBANK: 'AB', ORDER_NUMBER: 11, ACTION_NAME: 'На себя', SERVICE: 'Наш сервис'},
  {TERBANK: 'AB', ORDER_NUMBER: 21, ACTION_NAME: 'СБС', SERVICE: 'СБС1'},
  {TERBANK: 'AB', ORDER_NUMBER: 22, ACTION_NAME: 'СБС', SERVICE: 'СБС2'},
  {TERBANK: 'AB', ORDER_NUMBER: 23, ACTION_NAME: 'СБС', SERVICE: 'СБС3'},
  {TERBANK: 'BB', ORDER_NUMBER: 10, ACTION_NAME: 'В очередь', SERVICE: 'Наш сервис'},
  {TERBANK: 'BB', ORDER_NUMBER: 11, ACTION_NAME: 'На себя', SERVICE: 'Наш сервис'},
  {TERBANK: 'BB', ORDER_NUMBER: 21, ACTION_NAME: 'СБС', SERVICE: 'СБС1'},
  {TERBANK: 'BB', ORDER_NUMBER: 22, ACTION_NAME: 'СБС', SERVICE: 'СБС2'},
  {TERBANK: 'BB', ORDER_NUMBER: 23, ACTION_NAME: 'СБС', SERVICE: 'СБС3'},
  {TERBANK: 'CB', ORDER_NUMBER: 10, ACTION_NAME: 'В очередь', SERVICE: 'Наш сервис'},
  {TERBANK: 'CB', ORDER_NUMBER: 11, ACTION_NAME: 'На себя', SERVICE: 'Наш сервис'},
  {TERBANK: 'CB', ORDER_NUMBER: 21, ACTION_NAME: 'СБС', SERVICE: 'СБС1'},
  {TERBANK: 'CB', ORDER_NUMBER: 22, ACTION_NAME: 'СБС', SERVICE: 'СБС2'},
  {TERBANK: 'CB', ORDER_NUMBER: 23, ACTION_NAME: 'СБС', SERVICE: 'СБС3'},
];

Делаю следующее:
const actinsAB = allActions.filter(function(tb) {
  return tb.TERBANK == 'AB';
});

А как добавить условие, чтобы по ACTION_NAME отсеивались повторные элементы?
В общем, должен получиться вот такой массив:
const actinsAB = [
  {TERBANK: 'AB', ORDER_NUMBER: 10, ACTION_NAME: 'В очередь', SERVICE: 'Наш сервис'},
  {TERBANK: 'AB', ORDER_NUMBER: 11, ACTION_NAME: 'На себя', SERVICE: 'Наш сервис'},
  {TERBANK: 'AB', ORDER_NUMBER: 21, ACTION_NAME: 'СБС', SERVICE: 'СБС1'},
];
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(allActions.reduce((acc, n) => (acc[n.ACTION_NAME] = acc[n.ACTION_NAME] || n, acc), {}))

или

allActions.filter((n, i, a) => n === a.find(m => m.ACTION_NAME === n.ACTION_NAME))

или

Object.values(Object.fromEntries(allActions.map(n => [ n.ACTION_NAME, n ]).reverse())).reverse()

или

[...new Set(allActions.map(n => n.ACTION_NAME))].map(n => allActions.find(m => m.ACTION_NAME === n))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы