JavaScript: Třídění pole objektů podle hodnoty vlastnosti

JavaScript: Třídění pole objektů podle hodnoty vlastnosti
JavaScript

Řazení objektů JavaScriptu podle vlastnosti řetězce

Třídění polí objektů je v JavaScriptu běžným úkolem, zejména při práci s daty, která je třeba zobrazit v určitém pořadí. Jeden typický scénář zahrnuje řazení pole objektů podle hodnoty vlastnosti řetězce, jako je příjmení nebo titul.

V tomto článku prozkoumáme, jak seřadit pole objektů JavaScriptu podle hodnoty vlastnosti řetězce. Prozkoumáme použití metody `sort()` a prodiskutujeme, zda jsou nutné další kroky, jako je přidání metody `toString()` k objektům.

Příkaz Popis
sort(function(a, b) {...}) Definuje vlastní třídicí funkci pro určení pořadí prvků pole na základě specifických kritérií.
localeCompare() Porovná dva řetězce v aktuálním národním prostředí a vrátí číslo označující, zda referenční řetězec je před nebo za nebo je stejný jako daný řetězec.
console.log() Vydává informace do konzoly, obvykle pro účely ladění.

Podrobné vysvětlení třídění objektů JavaScriptu

Výše uvedené skripty jsou navrženy tak, aby seřadily pole objektů JavaScriptu podle hodnoty vlastnosti typu string last_nom. V prvním příkladu použijeme sort(function(a, b) {...}) metoda, která nám umožňuje definovat vlastní třídicí funkci. Tato funkce porovnává last_nom vlastnost každého objektu. Pokud je první objekt last_nom je menší než u druhého objektu last_nom, vrátí -1, což znamená, že první objekt by měl být před druhým. Pokud je první objekt last_nom je větší, vrátí 1, což znamená, že první objekt by měl následovat po druhém. Pokud jsou stejné, vrátí 0, což znamená, že jejich pozice by měly zůstat nezměněny.

Druhý skript používá stručnější syntaxi ES6. The localeCompare() metoda se používá v sort() funkce pro porovnání last_nom vlastnosti objektů. Tato metoda vrací číslo, které označuje, zda řetězec přichází před, za nebo je stejný jako jiný řetězec v aktuálním národním prostředí. The console.log() Funkce se používá v obou skriptech pro výstup setříděného pole do konzole pro ověření. Obě metody efektivně třídí pole objektů podle last_nom vlastnost, která ukazuje, jak zacházet s tříděním vlastností objektů v JavaScriptu.

Řazení pole objektů podle vlastnosti String v JavaScriptu

JavaScript na straně klienta

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);

Třídění pole objektů podle vlastnosti řetězce pomocí syntaxe ES6

JavaScript ES6

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);

Řazení pole objektů podle vlastnosti String v JavaScriptu

JavaScript na straně klienta

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);

Třídění pole objektů podle vlastnosti řetězce pomocí syntaxe ES6

JavaScript ES6

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);

Pokročilé techniky pro třídění objektů v JavaScriptu

Při řazení pole objektů podle vlastnosti řetězce v JavaScriptu je nezbytné porozumět složitosti sort() metoda. Ve výchozím nastavení je sort() metoda třídí prvky jako řetězce. To může vést k neočekávaným výsledkům při práci s čísly nebo speciálními znaky. Chcete-li zajistit přesné řazení, zejména s vlastnostmi řetězců, měli byste použít vlastní porovnávací funkci. Navíc localeCompare(), další užitečnou technikou je rozlišovat malá a velká písmena. Porovnání řetězců JavaScriptu ve výchozím nastavení rozlišuje velká a malá písmena, takže „a“ bude považováno za menší než „A“. Abyste tomu zabránili, můžete v rámci funkce porovnání převést všechny řetězce na malá nebo velká písmena.

Dalším důležitým aspektem, který je třeba zvážit, je řazení podle více vlastností. Například pokud dva objekty mají totéž last_nom hodnotu, možná je budete chtít dále seřadit podle first_nom. Toho lze dosáhnout rozšířením funkce vlastního porovnání o další podmínky. Takové víceúrovňové třídění zajišťuje, že data jsou uspořádána komplexně a poskytují smysluplnější výsledky. Pochopením a aplikací těchto pokročilých technik třídění můžete efektivně zvládnout složitější scénáře třídění dat v JavaScriptu.

Běžné otázky o řazení objektů JavaScriptu

  1. Jak třídíte pole objektů podle vlastnosti řetězce?
  2. Použijte sort() metoda s vlastní porovnávací funkcí, využívající localeCompare() pro srovnání řetězců.
  3. Rozlišuje se při třídění JavaScriptu malá a velká písmena?
  4. Ano, standardně. Abyste tomu zabránili, převeďte řetězce na malá nebo velká písmena ve funkci porovnání.
  5. Jak řešíte řazení podle více vlastností?
  6. Rozšiřte vlastní porovnávací funkci o další podmínky pro řazení podle sekundárních vlastností.
  7. Potřebujete přidat a toString() metoda k vašim objektům pro třídění?
  8. Ne, použití vlastní funkce porovnání je dostatečné.
  9. Co dělá localeCompare() dělat?
  10. Porovná dva řetězce v aktuálním národním prostředí a vrátí číslo udávající jejich pořadí.
  11. Můžete seřadit objekty podle číselných vlastností stejnou metodou?
  12. Ano, funkci porovnání můžete přizpůsobit tak, aby zvládla i číselná srovnání.
  13. Jak vytisknete seřazené pole?
  14. Použití console.log() vytisknout setříděné pole do konzole pro ověření.
  15. Jaký je význam návratových hodnot ve funkci porovnání?
  16. Určují pořadí prvků: -1 pro menší než, 1 pro větší než a 0 pro rovnost.

Zabalení třídění objektů v JavaScriptu

Řazení pole objektů podle vlastnosti řetězce v JavaScriptu lze efektivně dosáhnout pomocí sort() metoda s vlastní porovnávací funkcí. Pákovým efektem localeCompare() a zacházení s velikostí písmen, můžete zajistit přesné a smysluplné třídění dat. Pochopení těchto technik umožňuje lepší manipulaci s daty a jejich prezentaci a snadno se tak přizpůsobí složitějším scénářům. Řazení podle více vlastností navíc přidává další úroveň sofistikovanosti, díky čemuž je setříděný výstup relevantnější a organizovanější.