Array.sort

2011.12.20. 10:27 stack

Csak emlékeztetőként... :)

var list = [10, 1, 5];
list.sort();
console.log(list); // [1, 10, 5]
list.sort(function (a, b) {return a-b;});
console.log(list); // [1, 5, 10]

Szólj hozzá!

Címkék: sort array

Array.chunk()

2011.03.22. 13:16 stack

// [1, 2, 3, 4, 5, 6].chunk(2); -> [[1, 2], [3, 4], [5, 6]]
if (typeof Array.prototype.chunk === 'undefined') {
    Array.prototype.chunk = function (size) {
        for (var x, i = 0, c = -1, l = this.length, n = []; i < l; i++) {
            (x = i % size) ? n[c][x] = this[i] : n[++c] = [this[i]];
        }
        return n;
    };
}

Szólj hozzá!

Címkék: override array

Array.filter()

2010.03.16. 21:46 stack

if (typeof Array.prototype.filter === 'undefined') {
    Array.prototype.filter = function (fn, scope) {
        var result = [];
        for (var i = 0; i < this.length; i++) {
            if (fn.call(scope, this[i], i, this)) {
                result.push(this[i]);
            }
        }
        return result;
    };
}

var array = [1, 2, 3, 4];
alert(array.filter(function (n) {return n > 2;})); // [3, 4]

Szólj hozzá!

Címkék: filter array

tömb rendezés + összehasonlítások száma

2009.12.05. 10:18 stack

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?

var list = [];
for (var i = 0; i < 1000; i++) {
    list.push(i);
}
var count = 0;

list.sort(function(a, b){
    ++count;
    if (a < b) {
        return -1;
    }
    if (a > b) {
        return 1;
    }
    return 0;
});

alert(count);

Az eredmények:

Szólj hozzá!

Címkék: sort array nem extjs

Array.indexOf - IE vs. FF

2009.11.15. 09:45 stack

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:

var a = ['0', '1', '2'];
alert(a.indexOf(1));

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.

Szólj hozzá!

Címkék: array indexof

JSON + [undefined]

2009.09.16. 19:01 stack

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.

var a = [undefined, 'Hello világ!', 100];
var b = Ext.util.JSON.decode(Ext.util.JSON.encode(a));
alert('a: ' + a.length + '; b: ' + b.length);

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...

Szólj hozzá!

Címkék: array json undefined

Array.unique()

2009.06.15. 21:26 stack

csak úgy, mert hasznos...

Array.prototype.has = function(v) {
    for(var i = this.length; i;) {
        if (this[--i] === v) {
            return true;
        }
    }
    return false;
};

Array.prototype.unique = function() {
    var a = [];
    for(var i = this.length; i;) {
        if (!a.has(this[--i])) {
            a.push(this[i]);
        }
    }
    return a;
};

UPDATE: az eredeti script közel kétszer annyi futási idővel dolgozott, ezért le lett cserélve...

14 komment

Címkék: unique array nem extjs

Array.shuffle()

2009.04.27. 22:57 stack

Tömb elemeinek összekeverése:

Array.prototype.shuffle = function () {
    var result = [];
    while (this.length) {
        result.push(this.splice(Math.round(Math.random() * this.length - 1), 1)[0]);
    }
    return result;
};

Szólj hozzá!

Címkék: shuffle array nem extjs

Tömbé alakítás

2008.10.18. 10:22 stack

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é:

if (!Ext.isArray(A)) {
    A = [A];
}

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:

A = [].concat(A);

Szubjektív vélemény, de szerintem szebb az utóbbi. :)

Szólj hozzá!

Címkék: array

ExtJS blog, mi ez?

Az ExtJS egy JavaScript keretrendszer, melyet a blog írója elfogultan a legjobbnak tart, és ez a blog olyan apróságok gyűjteménye, melyek ExtJS használata közben felmerültek, eszébe jutottak...

Címkék

ajax (4) alignto (1) állás (3) analytics (1) anchorto (1) android (4) animate (2) array (9) auto (1) back button (1) beautifier (1) beforeevent (1) benchmark (1) blur (1) budapest.js (1) button (1) canvas (1) capture (1) case sensitive (1) center (1) change (1) cikkajánló (1) class (2) closure compiler (1) collapse (1) combobox (3) comment (1) console.log (2) contextmenu (2) core (2) count (1) css (15) csv (1) dataview (1) date (4) datefield (3) datepicker (1) debug (1) doksi (1) dragdrop (1) easing (1) eclipse (1) editor (1) element (5) error (5) eval (2) event (1) fejtörő (1) field (2) fieldset (1) filter (1) firefox (4) firefox extension (2) focus (3) fonts (1) fun (1) function (1) google (2) google chrome (1) grayscale (1) grid (4) group contact (1) header (3) height (2) hidden (1) hirek (2) history (1) htaccess (1) html5 (2) htmleditor (2) https (1) icon (3) id (2) ie (2) ie6 (1) ie9 (1) iframe (3) image (2) indexof (1) javascript (1) jquery (2) jslint (2) jsmin (1) json (7) keymap (1) kipróbálom (2) könyvajánló (2) label (1) layout (1) lint (1) log (1) loop (1) magyar (2) mandelbrot (1) mask (1) math (1) maxlength (1) mistake (1) mysql (5) napi szívás (16) nem extjs (12) node (1) nth child (1) number (1) off (5) offline (1) operator (1) override (20) pagesize (1) paging (2) panel (2) php (7) picker (1) plugin (3) pozicionálás (2) preload (1) print (1) propertygrid (1) pseudo (3) readonly (2) record (1) regexp (1) replace (1) resizable (1) rotate (1) round (1) scale (1) sencha touch (2) server (1) shuffle (1) slider (1) sort (3) sortable (1) store (2) string (7) sum (1) tabchange (1) tabpanel (1) tab key (2) tdd (1) template (1) textarea (2) textfield (1) textitem (1) theme (2) throw (1) timer (1) timestamp (1) title (2) toggle (1) toolbar (6) tools (1) total count (1) transparent (1) tree (1) treenode (1) trigger (1) truncate (1) try (1) ucfirst (1) undefined (2) unique (1) unload (1) urlencode (1) utf8 (2) verzió (1) video (1) viewer (1) viewport (2) visible (2) vtype (1) window (2) xtype (1) zindex (2)

Extjs.blog.hu - RSS

Kérdés?