const arr = [ 'Ēnas', 'Ēna', 'Epizode', 'Ēvele', 'Egles zarā sēž kaķis', 'Ērenpress ir velosipēdu ražotājs']
const alphabet = ['A','a','Ā','ā','B','b','C','c','Č','č','D','d','E','e','Ē','ē','F','f','G','g','Ģ','ģ','H','h','I','i','Ī','ī','J','j','K','k','Ķ','ķ','L','l','Ļ','ļ','M','m','N','n','Ņ','ņ','O','o','P','p','R','r','S','s','Š','š','T','t','U','u','Ū','ū','V','v','Z','z','Ž','ž'];
arr.sort(function (a, b) {
// index = burta pozīcija (0,1,2,3)...
const byLetters = (index) => {
// paņemam burtu pēc indexa (piemēram Ē, n, a, s)
const titleA = a[index], titleB = b[index];
// ja kāds no burtiem vairs nav (ēna/ēnas gadījuma), īsāko vārdu liekam priekšā
if (!titleA || !titleB) {
return titleA ? 1 : -1
}
// ja burti ir vienādi, skatāmies nākamo burtu
if (titleA === titleB) {
return byLetters(index+1)
}
// salīdzinam pēc alfabēta
const indexA = alphabet.findIndex(c => c === titleA)
const indexB= alphabet.findIndex(c => c === titleB)
if (indexA < indexB) {
return -1;
}
if (indexA > indexB) {
return 1;
}
}
// sākam ar pirmo (0) burtu vārdā
return byLetters(0)
});
Lielākā kļūdas tavā kodā:
1. nav tāds `alphabet.titleA`,
alphabet.titleA < alphabet.titleB