Сортировка строк, смешанных с числами, — распространенная задача при разработке на JavaScript. Независимо от того, имеете ли вы дело с манипулированием данными, пользовательским вводом или любым другим сценарием, включающим буквенно-цифровые данные, возможность сортировки таких строк имеет решающее значение. В этой статье мы рассмотрим различные методы сортировки строк в JavaScript, а также приведем примеры кода, иллюстрирующие каждый подход.
Метод 1: использование метода Array.sort() с собственной функцией сравнения
Один из самых простых способов сортировки строк, смешанных с числами, — использование метода Array.sort() со специальной функцией сравнения. Функция сравнения сравнивает два элемента массива и возвращает значение, указывающее их относительный порядок.
function sortAlphanumeric(a, b) {
const regex = /(\d+)|(\D+)/g;
const aParts = String(a).match(regex);
const bParts = String(b).match(regex);
while (aParts.length && bParts.length) {
const aPart = aParts.shift();
const bPart = bParts.shift();
const isANumber = !isNaN(aPart);
const isBNumber = !isNaN(bPart);
if (isANumber && isBNumber) {
const diff = Number(aPart) - Number(bPart);
if (diff !== 0) {
return diff;
}
} else if (!isANumber && !isBNumber) {
if (aPart !== bPart) {
return aPart.localeCompare(bPart);
}
} else {
return isANumber ? -1 : 1;
}
}
return aParts.length - bParts.length;
}
const array = ['item1', 'item10', 'item2', 'item20', 'item3'];
array.sort(sortAlphanumeric);
console.log(array);
Метод 2: использование метода localeCompare()
Метод localeCompare() сравнивает две строки и возвращает число, указывающее их относительный порядок. Используя этот метод в функции сортировки, мы можем добиться алфавитно-цифровой сортировки.
function alphanumericSort(a, b) {
return a.localeCompare(b, 'en', { numeric: true });
}
const array = ['item1', 'item10', 'item2', 'item20', 'item3'];
array.sort(alphanumericSort);
console.log(array);
Метод 3. Использование пакета npm естественной сортировки
Пакет npm natural-sort предоставляет удобное решение для естественной сортировки строк, смешанных с числами. Он обрабатывает различные сценарии, включая ведущие нули, отрицательные числа и многое другое.
Чтобы использовать пакет естественной сортировки, сначала установите его с помощью npm:
npm install natural-sort
Затем запросите его в своем файле JavaScript и примените к массиву строк:
const naturalSort = require('natural-sort');
const sorter = naturalSort();
const array = ['item1', 'item10', 'item2', 'item20', 'item3'];
array.sort(sorter);
console.log(array);
Сортировка строк, смешанных с числами, в JavaScript может осуществляться различными методами. В этой статье мы рассмотрели три подхода: использование метода Array.sort() с собственной функцией сравнения, использование метода localeCompare() и использование пакета npm с естественной сортировкой. Каждый метод имеет свои преимущества, и выбор зависит от конкретных требований вашего проекта. Понимая эти методы, вы сможете уверенно выполнять алфавитно-цифровую сортировку в JavaScript.