![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki skrypt:
Kod <!DOCTYPE HTML> <html> <head> <title> Sort a list alphabetically </title> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> </head> <body> <button> click here </button> <ul> <li>Geeks</li> <li>Sosna</li> <li>Zebra</li> <li>GeeksForGeeks</li> <li><h1>G</h1></li> <li><h1>F</h1></li> <li>Arbuz</li> <li><h1>A</h1></li> <li>Łódź</li> <li><h1>Ł</h1></li> <li>ósmy</li> <li><h1>Ó</h1></li> <li>święty</li> <li><h1>Ś</h1></li> <li>ärgern</li> <li><h1>Ä</h1></li> <li>Österreich</li> <li><h1>Ö</h1></li> <li>Überraschung</li> <li><h1>Ü</h1></li> </ul> <script> function Ascending_sort(a, b) { return ($(b).text().toUpperCase()) < ($(a).text().toUpperCase()) ? 1 : -1; } $('button').on('click', function() { $("ul li").sort(Ascending_sort).appendTo('ul'); }); </script> </body> </html> Codepen: https://codepen.io/rudolph-reti/pen/dyPzXER Dopiero zacząłem uczyć się JavaScriptu. Myślę, że jeszcze sporo materiału musiałbym przerobić zanim sam poradziłbym sobie z tym, dlatego bardzo proszę o pomoc. Chciałbym, żeby lista była sortowana za pomocą funkcji localeCompare(). Czy mógłby mi ktoś pomóc wpleść ją w ten kod? Ten post edytował stellatus 29.12.2019, 12:55:43 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to zamiast
return ($( ![]() ($(a).text().toUpperCase()) ? 1 : -1; daj poprostu return $(a).text().localeCompare($( ![]() ? edit: te buzki to b zakonczone nawiasem -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki
![]() Kod <!DOCTYPE HTML> <html> <head> <title> Sort a list alphabetically </title> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"> </script> </head> <body onload="finallListSort()"> <ul> <li>Geeks</li> <li>sosna</li> <li>Zebra</li> <li>GeeksForGeeks</li> <li><h1>G</h1></li> <li><h1>F</h1></li> <li>Arbuz</li> <li><h1>A</h1></li> <li>Łódź</li> <li><h1>Ł</h1></li> <li>ósmy</li> <li><h1>Ó</h1></li> <li>święty</li> <li><h1>Ś</h1></li> <li>ärgern</li> <li><h1>Ä</h1></li> <li>Österreich</li> <li><h1>Ö</h1></li> <li>Überraschung</li> <li>Ludzie</li> <li><h1>Ü</h1></li> <li><h1>L</h1></li> <li><h1>S</h1></li> <li>orka</li> <li><h1>O</h1></li> <li>ucho</li> <li><h1>U</h1></li> </ul> <script> function Ascending_sort(b, a) { a = $(a).text().trim().toUpperCase(); b = $(b).text().trim().toUpperCase(); return b.localeCompare(a, 'de'); } function finallListSort() { $("ul li").sort(Ascending_sort).appendTo('ul')}; </script> </body> </html> https://codepen.io/rudolph-reti/pen/dyPzXER Sortowanie dla języka polskiego działa poprawnie, ale dla niemieckiego nie. Wie ktoś dlaczego? Wszystkie umlauty (Ö, Ä, Ü) powinny iść na koniec listy, a stoją w miejscu. Ten post edytował stellatus 1.01.2020, 14:54:27 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
U mnie sortuje prawidlowo wiec pewnie nie masz wgranych odpowiednich niemieckich definicji
ewentualnie sprawdz czy twoja przegladarka obsluguje drugi parametr https://developer.mozilla.org/en-US/docs/We...r_compatibility -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Mam Firefoxa 71, więc powinno działać.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pisalem o dwoch potencjalnych problemach
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
No tak, sorry. Chodzi o to, że "nie mam wgranych odpowiednich niemieckich definicji"? A co dokładnie masz na myśli?
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ze musisz dograc do systemu paczke z jezykiem niemieckim?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Do jakiego systemu? Windowsa i Firefoxa mam już po niemiecku.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Kiepski ten twoj niemiecki w takim razie
![]() Dobra, podaj jeszcze przyklad jakiegos sortowania co bym mial pewnosc ze mowimy o tym samym -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem co masz na myśli mówiąc "przykład jakiegoś sortowania".
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No podaj przyklad paru slow, w kolejnosci jaka chcesz by byly posortowane
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
OK. Tak jak w poprzednich przykładach duże litery też miałyby być docelowo elementami list <ul> i nagłówkami <h3>.
Sposób 1 - tylko język niemiecki, litery Ä, Ö, Ü, ẞ powinny być na końcu: Z, Zecke, G, Geschäft, F, Friedrich, Affe, A, ärgern, Ä, Österreich, Ö, Überraschung, Leute, Ü, L, S, oft, O, Urlich, U, B, Bier, Fuß, film, groß, grom, müde, mur Sposób 2 (słowa polskie i niemieckie, kolejność liter: A, Ą, Ä, B, C, Ć, D, E, Ę, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ó, Ö, P, R, S, Ś, ß, T, U, Ü, W, Y, Z, Ź, Ż: Z, złoto, Zecke, G, Geschäft, garnek, F, Friedrich, fajka, Affe, A, arbuz, ärgern, Ä, Österreich, Ö, Überraschung, Leute, ludzie, Ü, L, S, samochód, oft, O, oczy, Urlich, U, B, Bier, baba, Fuß, film, groß, grom, müde, mur Kolega ze Stackoverflow próbował w ten sposób: https://codepen.io/_Light/pen/vYEWYMy?editors=1010, ale jego skrypt nie działa. Założenie mi się jednak bardzo podoba, bo chciałbym dowolnie zmieniać kolejność liter przy sortowaniu. Ten post edytował stellatus 4.01.2020, 12:14:14 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie ogarniam tego co piszesz. Ewidentnie jestem za glupi
Najpierw piszesz, ze ma byc taka kolejnosc: A, Ą, Ä, B, C, Ć, D, E, Ę, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ó, Ö, P, R, S, Ś, ß, T, U, Ü, W, Y, Z, Ź, Ż a potem pokazujesz wyrazy w zupelnie innej kolejnosci Z, złoto, Zecke, G, Geschäft, garnek, F, Friedrich, fajka, Affe, A, arbuz, ärgern, Ä, Österreich, Ö, Überraschung, Leute, ludzie, Ü, L, S, samochód, oft, O, oczy, Urlich, U, B, Bier, baba, Fuß, film, groß, grom, müde, mur Wiec ja nie wiem ostatecznie co ty chcesz miec jako wynik koncowy -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
To ja jestem głupi:) Sorry, napisałeś przecież wyraźnie: "podaj przyklad paru slow, w kolejnosci jaka chcesz by byly posortowane"
Sposób 1 - tylko język niemiecki, litery Ä, Ö, Ü, ẞ powinny być na końcu: A, Affe, B, Bier, F, Friedrich, Fuß, G, Geschäft, groß, L, Leute, müde, O, oft, S, U, Urlich, Z, Zecke, Ä, ärgern, Ö, Österreich, Ü, Überraschung, Sposób 2 (słowa polskie i niemieckie, kolejność liter: A, Ą, Ä, B, C, Ć, D, E, Ę, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ó, Ö, P, R, S, Ś, ß, T, U, Ü, W, Y, Z, Ź, Ż: A, Affe, arbuz, Ä, ärgern, B, baba, Bier, F, fajka, film, Friedrich, fuga, Fuß, G, garnek, Geschäft, grom, groß, J, jaźń, L, Leute, ludzie, mur, müde, O, oczy, oft, Ö, Österreich, S, samochód, U, Urlich, Ü, Überraschung, Z, Zecke, złoto, Ż, żółć Ten post edytował stellatus 4.01.2020, 14:23:28 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to drugi przyklad zalatwia ci w pelni localeCompare
A pierwszy przyklad, gdzie chcesz miec niemiecki literki na koncu to dodaj w funkcji sortujacej IFa na niemieckie literki dla nich zwracaj 1 czy tam -1 w zaleznosci jaka chcesz miec kolejnosc. Oczywiscie jak bedziesz mial do porownania dwie niemieckie literki to wtedy localeCompare bo je chcesz miec posortowane wzgledem siebie jak rozumiem edit: ale dobra, widze ze ta funkcja localeCompare faktycznie troche nedznie działa. Bo jak masz ł i l to on poprawnie je ustawi, ale jak juz masz ł i lu to on twierdzi ze lu jest po ł. Ale nędza edit2: aaa, dobra, tam sa jeszcze OPTIONS. Jak sie ustawi odpowiednie to fajnie juz dziala return b.localeCompare(a,'pl',{sensitivity: 'accent'}); Teraz poprawnie leci z polskimi ł i lu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Kolega ze Stackoverflow próbował w ten sposób: https://codepen.io/_Light/pen/vYEWYMy?editors=1010, ale jego skrypt nie działa. Założenie mi się jednak bardzo podoba, bo chciałbym dowolnie zmieniać kolejność liter przy sortowaniu. Bo nie używasz metody toLowerCase() na literze, a alfabet ma wyłącznie małe litery. Albo trzeba użyć tej metody, albo dodać do alfabetu wielkie litery (AaBbCc itd.). -------------------- |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiedziałem gdzie tę metodę wprowadzić, więc dodałem duże litery: https://codepen.io/rudolph-reti/pen/OJPzPqw
Sortowanie jest jednak dalej niepoprawne. Spójrz np. na literę F. Jest: "Friedrich, Fuß, Füchsin, fajka, film, fuga" a powinno być: "fajka, film, Friedrich, fuga, Fuß, Füchsin". |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Działa poprawnie. Wielkie litery w alfabecie mają priorytet, więc najpierw sortowane są wyrazy z wielkiej litery, potem te z małej.
Jeśli w alfabecie będą tylko małe litery, a użyjesz toLowerCase na literze, wtedy wielkość liter nie będzie mieć znaczenia. -------------------- |
|
|
![]() ![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 0 Dołączył: 9.03.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki! Działa, choć nie rozumiem jeszcze jak! Jestem Wam bardzo wdzięczny za pomoc
![]() https://codepen.io/rudolph-reti/pen/OJPzPqw Kod <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body onload="finallListSort()"> <ul> <li> <li> <h3>F</h3> </li> <li>fajka</li> <li>Füchsin</li> <li>film</li> <li>Friedrich</li> <li>fuga</li> <li>Fuß</li> <li> <h3>G</h3> </li> <li>gönnen</li> <li>garnek</li> <li>Geschäft</li> <li>grom</li> <li>groß</li> <li> <h3>J</h3> </li> <li>jaźń</li> <li>Jänner</li> <li> <h3>L</h3> </li> <li> <h3>S</h3> </li> <li> <h3>B</h3> </li> <li>samochód</li> <li>U</li> <li>Urlich</li> <li> <h3>Ü</h3> </li> <li>Überraschung</li> <li> <h3>Z</h3> </li> <li>Zecke</li> <li>złoto</li> <li> <h3>Ż</h3> </li> <li>żółć</li> <li>Leute</li> <li>Lüge</li> <li>ludzie</li> <li> <h3>M</h3> </li> <li>mur</li> <li>müde</li> <li> <h3>O</h3> </li> <li>oczy</li> <li>oft</li> <li> <h3>Ö</h3> </li> <li>Österreich</li> <h3>A</h3> </li> <li>Affe</li> <li>arbuz</li> <li> <h3>Ä</h3> </li> <li>ärgern</li> <li>aß</li> <li>baba</li> <li>Bier</li> <li>Büro</li> </ul> </body> Kod const alphabet = "aäąbcćdeęfghijklłmnńoóöprsśßtuüwyzźż";
function letterSort(a, b) { b = $(b).text().trim().toLowerCase(); a = $(a).text().trim().toLowerCase(); // Find the first position were the strings do not match let position = 0; while(a[position] === b[position]) { // If both are the same don't swap if(!a[position] && !b[position]) return 0; // Otherwise the shorter one goes first if(!a[position]) return 1; if(!b[position]) return -1; position++; } // Then sort by the characters position return alphabet.indexOf(a[position]) - alphabet.indexOf(b[position]); } function finallListSort() { $("ul li").sort(letterSort).appendTo('ul'); }; Ten post edytował stellatus 5.01.2020, 19:29:14 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.05.2025 - 14:11 |