'Бердичев','Великая Чернетчина','Геническ','Гнездычев','Черкассы'
'Черкассы','Бердичев','Великая Чернетчина','Геническ','Гнездычев'
const towns = [
'Бердичев',
'Великая Чернетчина',
'Геническ',
'Гнездычев',
'Черкассы'
];
const query = 'че';
let result = towns
.map(town => ({
name: town,
index: town.toLowerCase().indexOf(query),
}))
.filter(town => town.index >= -1)
.sort((a, b) => a.index - b.index)
.map(town => town.name);
var goroda = ['Бердичев','Великая Чернетчина','Геническ','Гнездычев','Черкассы'];
function sortirovka(a, m) {
a = a.toLowerCase();
return m.slice(0).sort( (name1, name2) => {
let i1 = name1.toLowerCase().indexOf( a );
let i2 = name2.toLowerCase().indexOf( a );
if( i1 < 0 ) return 1;
if( i2 < 0 ) return -1;
return Math.sign( i1 - i2 );
} );
}
sortirovka( 'че', goroda );