Hirdetés

Új hozzászólás Aktív témák

  • r4z
    nagyúr

    Ez a három szakasz a lényeg:

    var manufacturers = _.groupBy(inputdata, function (product) {
    return product.Gyarto;
    });

    Azaz magyarra fordítva az underscore groupBy függvényt: "csoportosítsd az inputdata tömb elemeit a Gyarto property értéke alapján". Ezután a manufacturers egy olyan objektum, amiben a kulcsok a gyártók, az értékek pedig az oda tartozó termékek listája.

    var manufacturerPrefixLengths = _.map(manufacturers, function (products, manufacturer) {
    return {
    manufacturer: manufacturer,
    prefix: _.min(products.map(function (product) {
    return product.Tipus.sameUntil(manufacturer);
    }))
    };
    });

    Itt van az összehasonlítás meghívva. A map függvény veszi egy lista vagy objektum elemeit, ráhív egy függvényt egyesével mindre, az eredményeket pedig egy új listába fűzi össze. Más szóval transzformálja a listát.

    Magyarul: "Minden gyártó-terméklista párt képezz le egy olyan objektumra, ami tartalmazza a gyártó nevét (manufacturer kulccsal), és az egyezések minimumát (prefix kulccsal)." A min függvény visszaadja egy lista minimumát.

    A terméklistából prefixhosszlistát meg egy belső map képez, ami minden terméket leképez a gyártó nevével vett egyező szakasz hosszára.

    var result = _.object(_.map(manufacturerPrefixLengths, function(x){return [x.manufacturer, x.prefix]}));

    Ez az utolsó hívás pedig annyit tesz, hogy az előző lépésben generált listát, amiben a {manufacturer, prefix} objektumok voltak, egy valódi objektumra alakítja át.

    Érthető :R

    Egy dolgot mondj még meg, kérlek: miért lehet az, hogy hiába másolom be a kódot karakterről karakterre, és még a JSON objektumot is hozzá igazítom. hogy pont olyan legyen, mint nálad (és ami amúgy valid), nem hajlandó működni. JSFiddle-ön is működik.

    Két dolgot csináltam vele összesen:
    - belefoglaltam egy functionbe
    - a function első sorában megadtam neki a változót, ami tartalmazza a JSON objektumot.

    A return product.Tipus.sameUntil(manufacturer); sornál viszont a Chrome konzolja Uncaught TypeErrror: cannot call method 'sameUntil' of undefined hibát dob. :F

Új hozzászólás Aktív témák