Изучение различных методов группировки и фильтрации массивов по атрибутам в Angular с использованием TypeScript

При разработке Angular с использованием TypeScript существует несколько способов фильтрации и группировки массивов на основе определенных атрибутов. В этой статье мы рассмотрим несколько методов и приведем примеры кода для каждого подхода. К концу вы получите четкое представление об этих методах, что позволит вам эффективно использовать их в своих проектах Angular.

Методы:

  1. Метод Array.prototype.reduce():
    Метод сокращение() позволяет нам перебирать массив и накапливать значения на основе определенного атрибута. Вот пример того, как сгруппировать массив объектов по определенному атрибуту:
const data = [
  { id: 1, category: 'fruit', name: 'apple' },
  { id: 2, category: 'fruit', name: 'banana' },
  { id: 3, category: 'vegetable', name: 'carrot' },
  { id: 4, category: 'vegetable', name: 'broccoli' },
];
const groupedData = data.reduce((acc, obj) => {
  const key = obj.category;
  if (!acc[key]) {
    acc[key] = [];
  }
  acc[key].push(obj);
  return acc;
}, {});
console.log(groupedData);

Выход:

{
  fruit: [
    { id: 1, category: 'fruit', name: 'apple' },
    { id: 2, category: 'fruit', name: 'banana' }
  ],
  vegetable: [
    { id: 3, category: 'vegetable', name: 'carrot' },
    { id: 4, category: 'vegetable', name: 'broccoli' }
  ]
}
  1. Метод Lodash GroupBy:
    Lodash — это популярная служебная библиотека, предоставляющая множество полезных функций. Метод groupBy() упрощает группировку массивов по определенному атрибуту. Чтобы использовать его, установите Lodash и импортируйте его в свой проект Angular:
import * as _ from 'lodash';
const data = [
  { id: 1, category: 'fruit', name: 'apple' },
  { id: 2, category: 'fruit', name: 'banana' },
  { id: 3, category: 'vegetable', name: 'carrot' },
  { id: 4, category: 'vegetable', name: 'broccoli' },
];
const groupedData = _.groupBy(data, 'category');
console.log(groupedData);

Выход:

{
  fruit: [
    { id: 1, category: 'fruit', name: 'apple' },
    { id: 2, category: 'fruit', name: 'banana' }
  ],
  vegetable: [
    { id: 3, category: 'vegetable', name: 'carrot' },
    { id: 4, category: 'vegetable', name: 'broccoli' }
  ]
}
  1. Настраиваемый метод фильтрации.
    Используя настраиваемый метод фильтрации, мы можем фильтровать и группировать массивы на основе определенных условий атрибутов. Вот пример:
const data = [
  { id: 1, category: 'fruit', name: 'apple' },
  { id: 2, category: 'fruit', name: 'banana' },
  { id: 3, category: 'vegetable', name: 'carrot' },
  { id: 4, category: 'vegetable', name: 'broccoli' },
];
const filteredData = data.filter(obj => obj.category === 'fruit');
console.log(filteredData);

Выход:

[
  { id: 1, category: 'fruit', name: 'apple' },
  { id: 2, category: 'fruit', name: 'banana' }
]

В этой статье мы рассмотрели различные методы фильтрации и группировки массивов по атрибутам в Angular с использованием TypeScript. Мы рассмотрели метод Array.reduce(), метод Lodash groupBy() и метод пользовательского фильтра. Каждый подход имеет свои преимущества и может использоваться в зависимости от конкретных требований вашего проекта. Используя эти методы, вы можете эффективно манипулировать и организовывать данные массива в своих приложениях Angular.