Autor Zpráva
TomTom
Profil *
Ahoj,

chtěl bych se zeptat zda lze pomocí jQuery vyhledat v JSON řetězci?
Mám tento kód:
var jsonReserved = jQuery.parseJSON('[{"datum":"2015-05-26","stav":"reserved"},{"datum":"2015-05-27","stav":"no"},{"datum":"2015-05-28","stav":"reserved"}]');
Potřeboval bych nějakou funkci, které zadám datum a zjistí, zda je datum v jsonReserved a pokud ano, tak aby vypsalo jsonReserved.stav. Stav, který patří k datu...

Můžete mi prosím někdo poradit? Lze to udělat nejak jednoduše přes jQuery?

Předem moc děkuji.
xROAL
Profil
Neviem, či jQuery má nejakú funkciu na to, ale dalo by sa to vyriešiť aj pomocou for:
var jsonReserved = jQuery.parseJSON('[{"datum":"2015-05-26","stav":"reserved"},{"datum":"2015-05-27","stav":"no"},{"datum":"2015-05-28","stav":"reserved"}]');

for(var i in jsonReserved){
    if(jsonReserved.hasOwnProperty(i)){
        if(jsonReserved[i].datum == '2015-05-27'){
            alert(jsonReserved[i].stav);
            break;
        }
    }
}
marizikmund
Profil
Tady je na to jednoduchá funkce, stačí do ní vložit požadované datum a pole s údaji. Pokud by v poli bylo více údajů se stejným datem, vrátí to první.

var jsonReserved = jQuery.parseJSON('[{"datum":"2015-05-26","stav":"reserved"},{"datum":"2015-05-27","stav":"no"},{"datum":"2015-05-28","stav":"reserved"}]');

function returnStateIfDate(dateToAsk,arrayDates) {
    return arrayDates.filter(function(date) {
        return date.datum == dateToAsk;
    })[0]['stav'];
}

console.log(returnStateIfDate("2015-05-27", jsonReserved)); //příklad použití
TomTom
Profil *
marizikmund:
Moc děkuji za odpověď. Snažím se to ještě upravit tak, aby když v jsonReserved nebude hledané datum aby mi fce vrátila false. Bohužel se mi nějak nedaří. Vždycky mi to zkolabuje...
Mohl byste mi prosím někdo poradit jak to upravit?

Předem moc děkuji
TomTom
Profil *
Tak už jsem na to přišel.
Moc děkuji za vaše odpovědi...
Chamurappi
Profil
Reaguji na marizikmunda:
Zapomněl jsi dodat, že metoda filter na poli nefunguje ve starších (ale stále používaných) prohlížečích.


Reaguji na TomToma:
K čemu tam je ten parseJSON, proč není ta struktura vepsaná rovnou jako JS pole?


Reaguji na xROALa:
Cyklus for-in se na procházení polí nehodí. Požil bych obyčejný for.
marizikmund
Profil
Chamurappi má pravdu, pokud chceš podporovat i IE8 a nižší, měl bys tam vložit ještě někam polyfill

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: