SORU
27 HAZİRAN 2011, PAZARTESİ


Erişim dizesi anahtar ile JavaScript nesneleri iç içe

Böyle bir veri yapısı var :

var someObject = {
    'part1' : {
        'name': 'Part 1',
        'size': '20',
        'qty' : '50'
    },
    'part2' : {
        'name': 'Part 2',
        'size': '15',
        'qty' : '60'
    },
    'part3' : [
        {
            'name': 'Part 3A',
            'size': '10',
            'qty' : '20'
        }, {
            'name': 'Part 3B',
            'size': '5',
            'qty' : '20'
        }, {
            'name': 'Part 3C',
            'size': '7.5',
            'qty' : '20'
        }
    ]
};

Ve verileri bu değişkeni kullanarak erişmek istiyorum :

var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";

part1name someObject.part1.name ile doldurulmalıdır 'olan s değeri, "Bölüm 1". 60 ile dolu olan part2quantity ile aynı şey.

Neyse ya saf javascript veya JQuery ile bunu başarmak için var mı?

CEVAP
27 HAZİRAN 2011, PAZARTESİ


Ben zaten vardı, iş gibi görünüyor: bazı benzer koduna göre bu yapılan

Object.byString = function(o, s) {
    s = s.replace(/\[(\w )\]/g, '.$1'); // convert indexes to properties
    s = s.replace(/^\./, '');           // strip a leading dot
    var a = s.split('.');
    for (var i = 0, n = a.length; i < n;   i) {
        var k = a[i];
        if (k in o) {
            o = o[k];
        } else {
            return;
        }
    }
    return o;
}

Kullanımı::

Object.byString(someObj, 'part3[0].name');

http://jsfiddle.net/alnitak/hEsys/ çalışan bir demo bakın

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Developers

    Android Deve

    9 Kasım 2007
  • ibebrent

    ibebrent

    23 Temmuz 2007
  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012