Riveran
@Riveran
Astartes

Как отсортировать массив адресов по возрастанию квартиры?

Добрый день, у меня есть такой массив:
const array = [
		{address: "ул.Колоса, 115, кв. 01"},
		{address: "ул.Колоса, 115, кв. 20"},
		{address: "ул. Т.Дудко 3А,  кв.11, кухня, гор. вода"},
		{address: "ул. Т.Дудко 3А,  кв.53, кухня, гор. вода"},
		{address: "ул.Колоса, 115, кв. 05"},
		{address: "ул.Колоса, 115, кв.31"},
		{address: "ул.Колоса, 115, кв. -"},
		{address: "ул. Т.Дудко 3А,  кв.10, кухня, гор. вода"},
		{address: "ул. Т.Дудко 3А,  кв.19, кухня, гор. вода"},
		{address: "ул. Т.Дудко 3А,  кв.04, кухня, гор. вода"},
	]

Как его можно отсортировать возрастанию квартиры?
  • Вопрос задан
  • 117 просмотров
Решения вопроса 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]);


// если элементы с отсутствующим номером квартиры должны оказаться
// в начале, а не в конце, то вместо Infinity надо поставить 0
const sortedArr = sorted(arr, n => +(n.address.match(/кв.\s*(\d+)/) || [ Infinity ]).pop());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 08:04
1 руб./за проект
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект