@melishev

Как отсортировать массив объектов, по внутренним элементам?

Есть массив объектов подобного вида:
[
  {
    Name: 'Товар 1'
    Info: {
      Hashtags: [ 'with-a-slit',  'with-transparent-inserts']
    }
  },
  {
    Name: 'Товар 2'
    Info: {
      Hashtags: [ 'with-a-slit']
    }
  },
  {
    Name: 'Товар 3'
    Info: {
      Hashtags: ['with-transparent-inserts']
    }
  },
  ....
]


и есть второй массив:
['with-transparent-inserts']

Как понятно в первом массиве есть товары, у каждого свой набор хештегов. Во второй массив заносятся хештеги выбранные пользователем. Надо сортировать первый массив по кол-ву соответствий, чем больше у товара соответствий с выбранными хештегами, тем выше он находиться в списке. Все товары при этом должны оставаться в массиве, даже если у них совсем нету совпадений
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sorted = (arr, key) => arr
  .map(n => [ n, key(n) ])
  .sort((a, b) => a[1] - b[1])
  .map(n => n[0]);


const sortedArr = sorted(arr1, n => -n.Info.Hashtags.filter(m => arr2.includes(m)).length);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы