function MySort(alphabet) {
return function (a, b) {
const index_a = alphabet.indexOf(a[0]);
const index_b = alphabet.indexOf(b[0]);
if (index_a === index_b) {
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
}
return index_a - index_b;
};
}
const items = ['świat', '1', 'ł', 'k', 'ą', '*sdf', '!', '!sdf', '@asdf', 'łódź', '_asd', '.sadf', '(sadf', ')sadf', '#sadf', '^asdf', '&asdf', '%asdf', '-sadf', '=sadf', '+sadf', '-sdf', 'sef', 'brocka'];
const sorter = MySort(
'*!@_.()#^&%-=+01234567989aąbcćdeęfghijklłmnńoóprsśtuwyzźż'
);
console.log(items.sort(sorter));
W wersji z ES6 można to zrobić o wiele prościej:
items.sort((a, b) => a.localeCompare(b);
Polecam zapoznać się localeCompare, ma kilka przydatnych opcji.