Сортировка буквенно-цифровых данных в сетке данных MUI X: методы и примеры

Сортировка буквенно-цифровых данных — обычное требование в веб-разработке при работе с MUI X Data Grid. В этой статье мы рассмотрим различные методы алфавитно-цифровой сортировки в MUI X Data Grid, а также приведем примеры кода. Независимо от того, работаете ли вы со строками, содержащими комбинацию букв и цифр или сочетание символов верхнего и нижнего регистра, эти методы помогут вам эффективно реализовать функции сортировки.

Метод 1: использование свойства sortModel
Сетка данных MUI X предоставляет свойство sortModel, которое позволяет вам управлять поведением сортировки. Указав специальную функцию сравнения, вы можете добиться буквенно-цифровой сортировки. Вот пример:

import { DataGrid } from '@mui/x-data-grid';
const rows = [
  { id: 1, name: 'Apple 10' },
  { id: 2, name: 'apple 2' },
  { id: 3, name: 'Apple 1' },
];
const columns = [
  { field: 'name', headerName: 'Name', width: 150 },
];
const alphanumericComparator = (a, b) => {
  return a.localeCompare(b, 'en', { numeric: true });
};
export default function AlphanumericSortGrid() {
  return (
    <div style={{ height: 300, width: '100%' }}>
      <DataGrid
        rows={rows}
        columns={columns}
        sortModel={[
          {
            field: 'name',
            sort: 'asc',
            comparator: alphanumericComparator,
          },
        ]}
      />
    </div>
  );
}

Метод 2: собственный алгоритм сортировки
Если вам нужен больший контроль над процессом сортировки, вы можете реализовать собственный алгоритм сортировки. Вот пример использования метода Array.sort():

import { DataGrid } from '@mui/x-data-grid';
const rows = [
  { id: 1, name: 'Apple 10' },
  { id: 2, name: 'apple 2' },
  { id: 3, name: 'Apple 1' },
];
const columns = [
  { field: 'name', headerName: 'Name', width: 150 },
];
const alphanumericSort = (a, b) => {
  const aName = a.name.toLowerCase();
  const bName = b.name.toLowerCase();
  if (aName < bName) return -1;
  if (aName > bName) return 1;
  return 0;
};
export default function AlphanumericSortGrid() {
  const sortedRows = rows.sort(alphanumericSort);
  return (
    <div style={{ height: 300, width: '100%' }}>
      <DataGrid rows={sortedRows} columns={columns} />
    </div>
  );
}

Сортировку буквенно-цифровых данных в MUI X Data Grid можно выполнить либо с помощью свойства sortModel с настраиваемой функцией сравнения, либо с помощью реализации настраиваемого алгоритма сортировки. Оба метода обеспечивают гибкость в зависимости от ваших конкретных требований. Следуя предоставленным примерам кода, вы можете легко включить буквенно-цифровую сортировку в свою реализацию сетки данных MUI X.

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

Реализуя эти методы сортировки, вы можете улучшить взаимодействие с пользователем и сделать сетку данных MUI X более универсальной и удобной для пользователя.