„JavaScript“: objektų masyvo rūšiavimas pagal nuosavybės vertę

„JavaScript“: objektų masyvo rūšiavimas pagal nuosavybės vertę
JavaScript

„JavaScript“ objektų rūšiavimas pagal eilutės ypatybes

Objektų masyvų rūšiavimas yra įprasta JavaScript užduotis, ypač dirbant su duomenimis, kurie turi būti rodomi tam tikra tvarka. Vienas tipiškas scenarijus apima objektų masyvo rūšiavimą pagal eilutės nuosavybės reikšmę, pvz., pavardę arba pavadinimą.

Šiame straipsnyje išnagrinėsime, kaip rūšiuoti „JavaScript“ objektų masyvą pagal eilutės ypatybės vertę. Išnagrinėsime metodo „sort()“ naudojimą ir aptarsime, ar reikalingi papildomi veiksmai, pvz., metodo „toString()“ pridėjimas prie objektų.

komandą apibūdinimas
sort(function(a, b) {...}) Apibrėžia pasirinktinę rūšiavimo funkciją, kad nustatytų masyvo elementų tvarką pagal konkrečius kriterijus.
localeCompare() Lygina dvi eilutes dabartinėje lokalėje, grąžindamas skaičių, nurodantį, ar nuorodos eilutė yra prieš ar po jos, ar yra tokia pati kaip nurodyta eilutė.
console.log() Išveda informaciją į konsolę, paprastai derinimo tikslais.

Išsamus „JavaScript“ objektų rūšiavimo paaiškinimas

Aukščiau pateikti scenarijai yra skirti rūšiuoti „JavaScript“ objektų masyvą pagal vadinamos eilutės ypatybės vertę last_nom. Pirmajame pavyzdyje mes naudojame sort(function(a, b) {...}) metodas, leidžiantis apibrėžti pasirinktinę rūšiavimo funkciją. Ši funkcija lygina last_nom kiekvieno objekto savybė. Jei pirmasis objektas last_nom yra mažesnis nei antrojo objekto last_nom, jis grąžina -1, nurodydamas, kad pirmasis objektas turi būti prieš antrąjį. Jei pirmasis objektas last_nom yra didesnis, jis grąžina 1, o tai reiškia, kad pirmasis objektas turėtų būti po antrojo. Jei jie yra lygūs, jis grąžina 0, o tai reiškia, kad jų pozicijos turėtų likti nepakitusios.

Antrasis scenarijus naudoja glaustesnę ES6 sintaksę. The localeCompare() metodas naudojamas sort() funkcija palyginti last_nom objektų savybės. Šis metodas grąžina skaičių, nurodantį, ar eilutė yra prieš, po jos ar yra tokia pati kaip kita eilutė dabartinėje lokalėje. The console.log() funkcija naudojama abiejuose scenarijuose norint išvesti surūšiuotą masyvą į konsolę patikrinti. Abu metodai efektyviai rūšiuoja objektų masyvą pagal last_nom savybė, parodanti, kaip tvarkyti objektų savybių rūšiavimą JavaScript.

Objektų masyvo rūšiavimas pagal eilutės ypatybę „JavaScript“.

Kliento pusės JavaScript

var objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort(function(a, b) {
    if (a.last_nom < b.last_nom) {
        return -1;
    }
    if (a.last_nom > b.last_nom) {
        return 1;
    }
    return 0;
});

console.log(objs);

Objektų masyvo rūšiavimas pagal eilutės ypatybę naudojant ES6 sintaksę

ES6 JavaScript

const objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));

console.log(objs);

Objektų masyvo rūšiavimas pagal eilutės ypatybę „JavaScript“.

Kliento pusės JavaScript

var objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort(function(a, b) {
    if (a.last_nom < b.last_nom) {
        return -1;
    }
    if (a.last_nom > b.last_nom) {
        return 1;
    }
    return 0;
});

console.log(objs);

Objektų masyvo rūšiavimas pagal eilutės ypatybę naudojant ES6 sintaksę

ES6 JavaScript

const objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));

console.log(objs);

Pažangūs „JavaScript“ objektų rūšiavimo metodai

Rūšiuojant objektų masyvą pagal „JavaScript“ eilutės savybę, būtina suprasti sort() metodas. Pagal numatytuosius nustatymus, sort() metodas rūšiuoja elementus kaip eilutes. Tai gali sukelti netikėtų rezultatų dirbant su skaičiais ar specialiaisiais simboliais. Norėdami užtikrinti tikslų rūšiavimą, ypač su eilutės ypatybėmis, turėtumėte naudoti pasirinktinę palyginimo funkciją. Be to localeCompare(), dar vienas naudingas metodas yra mažųjų ir mažųjų raidžių jautrumo valdymas. „JavaScript“ eilučių palyginime pagal numatytuosius nustatymus skiriamos didžiosios ir mažosios raidės, todėl „a“ bus laikoma mažesne nei „A“. Norėdami to išvengti, palyginimo funkcijoje visas eilutes galite konvertuoti į mažąsias arba didžiąsias raides.

Kitas svarbus aspektas, į kurį reikia atsižvelgti, yra rūšiavimas pagal kelias savybes. Pavyzdžiui, jei du objektai turi tą patį last_nom vertės, galbūt norėsite juos toliau rūšiuoti pagal first_nom. Tai galima pasiekti išplečiant pasirinktinio palyginimo funkciją, įtraukiant papildomas sąlygas. Toks kelių lygių rūšiavimas užtikrina, kad duomenys būtų surikiuoti visapusiškai, suteikiant prasmingesnius rezultatus. Suprasdami ir taikydami šiuos išplėstinius rūšiavimo metodus, galite efektyviai valdyti sudėtingesnius duomenų rūšiavimo scenarijus naudodami „JavaScript“.

Dažni klausimai apie „JavaScript“ objektų rūšiavimą

  1. Kaip surūšiuoti objektų masyvą pagal eilutės savybę?
  2. Naudoti sort() metodas su pasirinkta palyginimo funkcija, naudojant localeCompare() stygų palyginimui.
  3. Ar „JavaScript“ rūšiavimo atveju skiriamos didžiosios ir mažosios raidės?
  4. Taip, pagal nutylėjimą. Norėdami to išvengti, palyginimo funkcijoje konvertuokite eilutes į mažąsias arba didžiąsias raides.
  5. Kaip tvarkote rūšiavimą pagal kelias savybes?
  6. Išplėskite tinkintą palyginimo funkciją, kad įtrauktumėte papildomas rūšiavimo pagal antrines savybes sąlygas.
  7. Ar reikia pridėti a toString() rūšiavimo metodą?
  8. Ne, pakanka naudoti pasirinktinę palyginimo funkciją.
  9. Ką daro localeCompare() daryti?
  10. Jis lygina dvi eilutes dabartinėje lokalėje ir grąžina skaičių, nurodantį jų tvarką.
  11. Ar galite rūšiuoti objektus pagal skaitines savybes naudodami tą patį metodą?
  12. Taip, galite tinkinti palyginimo funkciją, kad galėtumėte atlikti ir skaitinius palyginimus.
  13. Kaip išvesti surūšiuotą masyvą?
  14. Naudokite console.log() norėdami atspausdinti surūšiuotą masyvą į konsolę patikrinti.
  15. Kokia yra grąžinamų verčių reikšmė palyginimo funkcijoje?
  16. Jie nustato elementų eiliškumą: -1 - mažesnis nei, 1 didesnis nei ir 0 lygus.

Objektų rūšiavimo užbaigimas JavaScript

Objektų masyvą pagal „JavaScript“ eilutės savybę galima efektyviai rūšiuoti naudojant sort() metodas su pasirinkta palyginimo funkcija. Naudojant svertą localeCompare() ir tvarkydami didžiųjų ir mažųjų raidžių jautrumą, galite užtikrinti tikslų ir prasmingą duomenų rūšiavimą. Šių metodų supratimas leidžia geriau manipuliuoti ir pateikti duomenis, lengvai prisitaikant prie sudėtingesnių scenarijų. Be to, rūšiavimas pagal kelias ypatybes suteikia dar vieną sudėtingumo sluoksnį, todėl surūšiuota produkcija tampa aktualesnė ir organizuotesnė.