Diskuze: Seřazení pole polí
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Jednoduše použiješ callback jako parametr metody sort.
var pole = [[5, 2, 6], [89, 3, 5], [1, 1, 0]];
var serazeno = pole.sort(function(a, b) {
return a[1]-b[1];
});
Mimochodem, výsledek callbacku:
0: stejné hodnoty = neprohodí
+1 (resp. kladný): prohodí <strong>b</strong> za
<strong>a</strong>
Děkuji - vysvětlil jsi mi to dokonale. Super! (Takže to stejně probíhá v cyklu. )
Je to řazeno od nejmenšího po největší podle druhé položky vnořeného pole. Proč to tak je jsem doplnil do původního příspěvku
Prohodit a s b a prohodit b za a je totéž. Ale jinak je to OK.
Parametry a a b jsou vždy naplněny hodnotami, u kterých sort() potřebuje zjistit, co je větší.
Anonymní funkce jsou prostě kouzelné
Přesně. Teda pokud to chceš řadit od největší položky po nejmenší. Pak jsi to pochopil dobře
Jo, taky jsem si to pak uvědomil, ale snad to bude jasné, když je to pod tím naopak
Na anonymní funkce jsem poprvé narazil v Lispu a byl jsem velmi potěšen, že se dostaly i do Pythonu. Je to jednoduchý způsob, jak aplikovat DI a neztratit přitom orientaci v programu.
Jaká je vůbec správná definice lambda výrazů? Na internetu jsou velké rozpory.
Teď nevím, co myslíš. Funkci můžeš definovat jedině pomocí klíčového slova function, přičemž ji můžeš a nemusíš dávat jméno případně ji můžeš uložit do proměnné. Následující zápisy jsou v JS ekvivalentní:
var hello = new Function("return 'word'");
var hello = function(){ return 'world'; };
function hello() { return 'world' };
Z těch možností můžeš používat kteroukoli snad kromě první. Tu bych raději nepoužíval.
Funkce si můžeš nechat předávat do parametrů a spouštět. Spouštění funkcí v JS jde taky několika způsoby:
hello();
hello.call(kontext, parametr1, parametr2);
hello.apply(kontext, [parametr1, parametr2]);
Funkci lze dokonce hned zavolat. Stačí ji obalit závorkami, aby bylo jasné, co voláš:
(function(message) {
console.log(message);
})('Hello world');
Tím, že je můžeš mít v proměnné, se dají taky hezky předávat jako parametry. Např. pro různé události, které se mají vykonat (např. po načtení AJAX požadavku, po skončení animace apod.)
Ty zápisy funkcí nejsou zcela ekvivalentní. Každá se chová trochu jinak. Dokonce funguje i podivná konstrukce
var hello = function hello2(){ return 'world'; };
Tato funkce má pak 2 jména. Funkce hello2() je v navazujícím kódu nedostupná, ale je možné ji použít k rekurzi z funkce hello().
Pokud funkci definuji pomocí
var hello = function(){ return 'world'; };
je před touto definicí nedostupná a může být za běhu redefinována jinou funkcí se stejným názvem. To u klasické deklarace funkce není možné, je platná v celém skriptu.
Zobrazeno 15 zpráv z 15.