Вычисление схождения массивов

21 Апреля 2023 19:34

Вычисляем совпадение элементов в массивах JS.

Это может понадобиться в тех случаях, когда нужно вычислить похожесть элементов нескольких массивов или найти определенные жлементы одного массива в другом массиве.

Ситуация.

У нас есть компонент приложения, который может выполнять какие-то определенные действия, указанные в массиве availableActions. Но в одном случае нужен набор одних действий, в другом - других.

const availableActions = [{
  name: 'addToPlaylist',
  label: 'Add to playlist'
},{
  name: 'removeFromPlaylist',
  label: 'Remove from playlist'
},{
  name: 'findSimilar',
  label: 'Find similar tracks'
},{
  name: 'addToFavorite',
  label: 'Add to favorite'
}]

И для того, чтобы указать какие конкретно действия нам нужны, мы передаем компоненту массив с name нужных действий:

const actions = ['addToPlaylist', 'removeFromPlaylist']

Теперь мы генерируем новый массив из того, что есть в availableActions, но с учетом того, что в массиве actions, опираясь на ключ name в availableActions.

const filteredActions = availableActions.filter(item => actions.includes(item.name))

Теперь новый массив можно использовать в рендеринге кнопок действий.