Сортировка массива в JS в зависимости от начала строки
Всем привет, есть список из названий:
- ДР-Адлер/001
- ДР-Адлер/002
- ДР-Сочи/002
- ДР-АД-Адлер/001
- ДР-Брянск/002
Ожидаемый результат:
- ДР-Адлер/001
- ДР-Адлер/002
- ДР-Брянск/002
- ДР-Сочи/002
- ДР-АД-Адлер/001
Через SQL запрос я делал вот так
SELECT id, name FROM dr_list ORDER BY name LIKE '%ДР-АД-%', name
А вот в JS не могу понять как так же отсортировать. Может кто подкинуть идей?
UPD1: Накидал такую функцию, добавил в массив "ДР-ААдлер", но после сортировки значение находится перед ДР-АД-Адлер/001
enabled_sl_name.sort(function(a, b){
if(a.includes('ДР-АД-')) { return 1; }
if(b.includes('ДР-АД-')) { return -1; }
if(a.includes('ДР-АД-') & b.includes('ДР-АД-') & a > b) { return 1; }
if(a.includes('ДР-АД-') & b.includes('ДР-АД-') & a < b) { return -1; }
return 0;
})
Ответы (1 шт):
Автор решения: Pilaton
→ Ссылка
let arr = ['ДР-Адлер/001', 'ДР-Адлер/002', 'ДР-Сочи/002', 'ДР-АД-Адлер/003', 'ДР-АД-Адлер/001', 'ДР-Брянск/002'];
let newArr = arr.filter((a) => !a.includes('ДР-АД-')).sort();
newArr.push(...arr.filter((a) => a.includes('ДР-АД-')).sort());
console.log('newArr', newArr);