Csak emlékeztetőként... :)
list.sort();
console.log(list); // [1, 10, 5]
list.sort(function (a, b) {return a-b;});
console.log(list); // [1, 5, 10]
Csak emlékeztetőként... :)
Az elmúlt hetekben több helyen is találkoztam ehhez hasonló mintakóddal, mivel az eredményeken jót mosolyogtam, gondoltam én is kiteszem. Nagy jelentősége persze nincsen, csupán érdekesség.
Adott egy 1000 elemű tömb, benne az elemek növekvő sorrendben. Vajon az egyes böngészők hány összehasonlítást használnak rendezés közben?
Az eredmények:
A JavaScript keretrendszerek egyik nagy előnye, hogy a fejlesztőket megkímélik a különböző böngészők sajátosságaitól. Szerintem ez az Ext JS-re különösen igaz. Mégis, minap egy furcsa hibába ütköztem:
Míg Firefox a natív függvényt használja, addig az IE az ExtJS-ben definiáltat. Az elsőben van típusellenőrzés, míg a másodikban nincsen.
Nagyon közhely: rossz kódban, rossz hibák vannak, és rossz azokat keresni! :)
PHP-ban valamiért összekeveredik a lista és az asszociatív tömb, talán emiatt is sokszor JavaScriptben is találni olyan példákat, hogy egy elem tulajdonságai nem Object-ben, hanem Array-ban vannak. (előre meghatározott sorrendben). Azontúl, hogy nagyon kerülendő ez a megoldás, még komoly hibaforrás is lehet, ha valamelyik tulajdonság undefined is lehet, majd mindezt valamiért JSON-nal el akarnánk kódolni.
Eredmény: "a: 3; b:2". és ugye azt mondani sem kell, hogy az indexek eggyel elcsúsztak... Meg lehetne hack-elni az encode-t, hogy készüljön fel erre az extrém esetre, de jobb inkább ezt az egészet elkerülni...
csak úgy, mert hasznos...
UPDATE: az eredeti script közel kétszer annyi futási idővel dolgozott, ezért le lett cserélve...
Tömb elemeinek összekeverése:
Az ExtJS forráskódját vizsgálva egy számomra új és érdekes ötletre bukkantam.
Ha pl. egy függvény bejövő paraméterének megengedem, hogy akár egy elemet, akár listában több elemet tartalmazzon, akkor ezt az értéket a következő kóddal alakíthatom tömbbé:
Ezzel szemben ugyanezt a hatást érhetjük el azzal is, ha a bejövő értéket hozzáfűzzük egy üres tömbhöz:
Szubjektív vélemény, de szerintem szebb az utóbbi. :)