Hirdetés

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

  • r4z
    nagyúr

    Legközelebb lőjetek le hamarabb, ha elkezdek baromságokat írogatni :DDD

    Az előző rant a gyártó meghatározásról irreleváns, mert a "DB"-ben megvan. A feladat egy kis adattranszformálás: csoportosítani a termékeket a gyártó szerint, majd gyártónként megkeresni az egyező szövegek minimumát, és ebből összeállítani egy objektumot, vagy valamit.

    Ez az underscore.js segítségével pofonegyszerű.

    Össze is dobtam JSFiddle-ön. :) Bátorkodtam annyit változtatni, hogy a bemenetet JSON-re átkonvertáltam regexekkel, és kis csalással csempésztem be az inputdata változóba.

    A kimeneten látszik, hogy pl. a Rockstar Energy termékekben a közös rész a "Rockstar ". A 28 Blacknél meg semmi a Schwarze Dose miatt.

    Ó, ez így nagyon jó :) Át is tudtam alakítani az XML-t JSON objektummá a HTML-en belül egy rejtett div-ben AJAX-szal, majd a div tartalmából létrehoztam a változót. Még egy kicsit tisztább is lett az adathalmaz.

    Viszont amire nem jövök rá, hogy hogy indul be ez az egész összehasonlító folyamat :B

  • r4z
    nagyúr

    Nem igazán értem a második feladatot...

    De az elsőhöz egy for ciklus kell ami végigmegy 0-tól a rövidebbik string hosszáig vagy ameddig egyeznek az i-edik karakterek.

    A másodiknak az a lényege, hogy az egy gyártótól származó italok márkanevei egységesen legyenek kiemelve (igen, ez a jQuery topikban lévő adatbázishoz kapcsolódik). Konkrétabban:

    Gyártó:
    Rockstar Energy
    Italok:
    Rockstar Energy Drink
    Rockstar Punched Guava
    Rockstar Recovery Limonade

    Azt szeretném, hogy az elsőnél ne legyen kiemelve az Energy is, hanem egységesen csak a Rockstar mindnél.

    Ezt a jQuery által lekérdezett ID-k alapján szerintem vissza lehetne keresni, csak ötletem sincs, hogyan kéne. A local- vagy sessionStorage talán segíthet, mondjuk hogy ha eltérő gyártó kerül oda, mint az felgyűlt, akkor hozza csak létre a bejegyzéseket a HTML táblában, és utána a localStorage-et üríti.

    Jim-Y:
    Köszi a kódot, az első biztosan jó lesz, mert mindig ugyanúgy kezdődik a két string. A másodikkal játszadozok picit.

  • r4z
    nagyúr

    Sziasztok!

    Lenne egy elég összetett problémám.
    Adott egy XML adatbázis, amiből egy HTML táblázatba gyűjtöttem ki az adatokat jQueryvel. Eddig minden jól ment. Azonban minden elemhez tartozik két string típusú változó (str1 és str2), amikre igaz, hogy str1 és str2 első néhány karaktere megegyezik, az egyező részt kell kivennem sz str2 stringből.

    Ezt a két stringet kéne összehasonlítania egy (szerintem) while ciklusnak, és kiköpnie egy i-t, ahol az i annak a karakternek a sorszáma, ami utolsóként megegyezik a két stringben. Ezzel az i-vel substringgel már el tudnám választani a str2 két részét. A segítségeteket kérném a while ciklushoz.

    Példa:

    str1 -- str2 ------ i
    alma -- aluljáró -- 2
    sarok - sarokpolc - 5
    kendő - kender ---- 4

    Ezen kívül egymás utáni rekordokban az str1 megegyezik, és az szeretném, hogy ugyanannyi (legkevesebb) karaktert válasszon ki nekik.
    alma - aluljáró - 2
    alma - almárium - 3
    alma - alváz ---- 2

    Tehát 2 kell eredményül itt.

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

Hirdetés