Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][JavaScript] sortowanie za pomocą localeCompare()
stellatus
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
stellatus
post
Post #2





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 (IMG:style_emoticons/default/guitar.gif)

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
Go to the top of the page
+Quote Post

Posty w temacie
- stellatus   [HTML][JavaScript] sortowanie za pomocą localeCompare()   29.12.2019, 12:52:38
- - nospor   No to zamiast return ($(.text().toUpperCase(...   30.12.2019, 11:31:26
- - stellatus   Dzięki Tutaj jest trochę zmodyfikowana wersja: ...   1.01.2020, 14:50:52
- - nospor   U mnie sortuje prawidlowo wiec pewnie nie masz wgr...   2.01.2020, 12:04:21
- - stellatus   Mam Firefoxa 71, więc powinno działać.   3.01.2020, 10:56:53
- - nospor   Pisalem o dwoch potencjalnych problemach   3.01.2020, 11:04:36
- - stellatus   No tak, sorry. Chodzi o to, że "nie mam wgran...   3.01.2020, 15:48:52
- - nospor   No ze musisz dograc do systemu paczke z jezykiem n...   3.01.2020, 15:52:37
- - stellatus   Do jakiego systemu? Windowsa i Firefoxa mam już po...   3.01.2020, 22:07:42
- - nospor   Kiepski ten twoj niemiecki w takim razie Dobra, ...   4.01.2020, 09:52:35
- - stellatus   Nie rozumiem co masz na myśli mówiąc "przykła...   4.01.2020, 11:40:57
- - nospor   No podaj przyklad paru slow, w kolejnosci jaka chc...   4.01.2020, 11:43:18
- - stellatus   OK. Tak jak w poprzednich przykładach duże litery ...   4.01.2020, 11:57:23
- - nospor   Nie ogarniam tego co piszesz. Ewidentnie jestem za...   4.01.2020, 12:34:13
- - stellatus   To ja jestem głupi:) Sorry, napisałeś przecież wyr...   4.01.2020, 13:04:53
- - nospor   No to drugi przyklad zalatwia ci w pelni localeCom...   4.01.2020, 17:26:02
- - trueblue   Cytat(stellatus @ 4.01.2020, 11:57:23...   4.01.2020, 17:36:30
- - stellatus   Nie wiedziałem gdzie tę metodę wprowadzić, więc do...   5.01.2020, 12:20:58
- - trueblue   Działa poprawnie. Wielkie litery w alfabecie mają ...   5.01.2020, 12:27:19
- - stellatus   Dzięki! Działa, choć nie rozumiem jeszcze jak...   5.01.2020, 19:23:48


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 10:58