Проверить равенство между свойством массива объектов и свойством объекта и вернуть новый объект

В моем приложении я проверяю равенство между свойством массива объектов и свойством вложенного объекта — на основе результатов я возвращаю новый массив объектов.

В items массив объектов:

[{name: 'test', value: 1, category: 'a'},{name: 'test2', value: 2, category: 'b'},{name: 'test3', value: 3, category: 'b'},{name: 'test4', value: 4, category: 'c'}]

В categories объект:

{testnum1: {name: 'test123', partialName: '123', category: 'a'}, testnum2: {name: 'test234', partialName: '234', category: 'b'}

Мне нужно проверить равенство между category properties и вернуть следующий массив объектов:

[{name: 'test', itemCategory: 'testnum1'},{name: 'test2', itemCategory: 'testnum2'},{name: 'test3', itemCategory: 'testnum2'}]

Это то, что я сделал, есть идеи, как сделать его более читаемым?

function getLookupByKey(arr, key): any {
  return [...new Map(arr.map(item => [item[key], item])).values()]
}

export function getCategorizedItems(items) {
  const categorizedItems = items
    .map(item=> {
      const categorizedItem= categories[item.category]?.find(c =>
        item.name.match(new RegExp(c.partialName))
      )
      return {
        url: item.downloadURL,
        category: categorizedItem?.category,
        categoryName: categorizedItem?.name,
        name: item.name,
        lastChangedOn: item.lastChangedOn
      }
    })
    .filter(item => item.category)
    .sort(item => item.lastChangedOn)

return getLookupByKey(categorizedItems, 'category')

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *