SORU
14 ŞUBAT 2011, PAZARTESİ


jQuery'in kullanın() JSON nesnesi

brnwdrng's question, benzer bir şekilde JSON gibi bir nesne ile arama yapmak için arıyorum.
benim nesnenin yapısı diyelim ki öyle gibi

TestObj = {
    "Categories": [{
        "Products": [{
            "id": "a01",
            "name": "Pine",
            "description": "Short description of pine."
        },
        {
            "id": "a02",
            "name": "Birch",
            "description": "Short description of birch."
        },
        {
            "id": "a03",
            "name": "Poplar",
            "description": "Short description of poplar."
        }],
        "id": "A",
        "title": "Cheap",
        "description": "Short description of category A."
    },
    {
        "Product": [{
            "id": "b01",
            "name": "Maple",
            "description": "Short description of maple."
        },
        {
            "id": "b02",
            "name": "Oak",
            "description": "Short description of oak."
        },
        {
            "id": "b03",
            "name": "Bamboo",
            "description": "Short description of bamboo."
        }],
        "id": "B",
        "title": "Moderate",
        "description": "Short description of category B."
    }]
};

Kimliği ile nesne=almak istiyorum"".

Bütün eşyaları sıralama gibi çalıştım:

$(TestObj.find(":id='A'"))

ama hiçbir şey iş gibi görünüyor.

Herkes bir madde kullanmadan bazı ölçütlere göre almak bir yol düşünebiliyor 'her'?

CEVAP
14 ŞUBAT 2011, PAZARTESİ


jQuery düz nesne harfleri çalışmıyor. Arama benzer bir şekilde işlev aşağıda 'kimliği (ya da başka bir mal), nesne derinliği ne olursa olsun: . kullanın edebilirsiniz

function getObjects(obj, key, val) {
    var objects = [];
    for (var i in obj) {
        if (!obj.hasOwnProperty(i)) continue;
        if (typeof obj[i] == 'object') {
            objects = objects.concat(getObjects(obj[i], key, val));
        } else if (i == key && obj[key] == val) {
            objects.push(obj);
        }
    }
    return objects;
}

Kullanmak gibi

getObjects(TestObj, 'id', 'A'); // Returns an array of matching objects

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • TSE

    TSE

    12 Kasım 2012