JavaScript-taulukon lajittelu - JS-lajittelumenetelmien käyttäminen (koodiesimerkkien kanssa)

JavaScriptissä voimme lajitella matriisin elementit helposti sisäänrakennetulla menetelmällä, jota kutsutaan lajittelu () -funktioksi.

Tietotyypit (merkkijono, numero ja niin edelleen) voivat kuitenkin vaihdella taulukosta toiseen. Tämä tarkoittaa, että pelkkä sort () -menetelmän käyttö ei ole aina sopiva ratkaisu.

Tässä viestissä opit kuinka lajitella taulukko JavaScriptiä käyttämällä merkkijonojen ja numeroiden lajittelu () -menetelmää.

Jousisarja

Aloitetaan merkkijonoilla:

const teams = ['Real Madrid', 'Manchester Utd', 'Bayern Munich', 'Juventus'];

Kun käytämme lajittelu () -menetelmää, elementit lajitellaan oletuksena nousevassa järjestyksessä (A - Z):

teams.sort(); // ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']

Jos haluat lajitella taulukon laskevassa järjestyksessä, sinun on käytettävä sen sijaan käänteistä () -menetelmää:

teams.reverse(); // ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']

Numeroryhmä

Numeroiden lajittelu ei valitettavasti ole niin yksinkertaista. Jos sovellamme lajittelumenetelmää suoraan numeroryhmään, näemme odottamattoman tuloksen:

const numbers = [3, 23, 12]; numbers.sort(); // --> 12, 23, 3

Miksi sort () -menetelmä ei toimi numeroille

Itse asiassa se toimii, mutta tämä ongelma tapahtuu, koska JavaScript lajittelee numerot aakkosjärjestyksessä. Haluan selittää tämän yksityiskohtaisesti.

Ajatelkaamme A = 1, B = 2 ja C = 3.

const myArray = ['C', 'BC', 'AB']; myArray.sort(); // [AB, BC, C]

Esimerkiksi, jos meillä on kolme merkkijonoa C (3), BC (23) ja AB (12), JavaScript lajittelee ne AB: ksi, BC: ksi ja C: ksi nousevassa järjestyksessä, mikä on aakkosjärjestyksessä oikein.

JavaScript kuitenkin lajittelee numerot (jälleen aakkosjärjestyksessä) 12, 23 ja 3, mikä on väärin.

Ratkaisu: Vertaa-toiminto

Onneksi voimme tukea sort () -menetelmää perusvertailutoiminnolla, joka tekee temppun:

function(a, b) {return a - b}

Lajittelumenetelmä voi onneksi lajitella negatiiviset, nolla- ja positiiviset arvot oikeaan järjestykseen. Kun lajittelu () -menetelmä vertaa kahta arvoa, se lähettää arvot vertailutoiminnollemme ja lajittelee arvot palautetun arvon mukaan.

  • Jos tulos on negatiivinen, a lajitellaan ennen b: tä.
  • Jos tulos on positiivinen, b lajitellaan ennen a: ta.
  • Jos tulos on 0, mikään ei muutu.

Tarvitsemme vain vertailutoiminnon käyttämisen sort () -menetelmän sisällä:

const numbers = [3, 23, 12]; numbers.sort(function(a, b){return a - b}); // --> 3, 12, 23

Jos haluamme lajitella numerot laskevassa järjestyksessä, meidän on tällä kertaa vähennettävä toinen parametri (b) ensimmäisestä (a):

const numbers = [3, 23, 12]; numbers.sort(function(a, b){return b - a}); // --> 23, 12, 3

Paketoida

Joten kuten näemme, matriisin elementtien lajittelu voidaan tehdä helposti JavaScriptissä sort () -menetelmällä, jos osaamme käyttää sitä oikein. Toivon viestini auttavan sinua ymmärtämään, kuinka sort () -menetelmää voidaan käyttää JavaScriptissä oikealla tavalla.

Jos haluat oppia lisää verkkokehityksestä, käy vapaasti Youtube-kanavallani.

Kiitos, että luit!