使用字符串键访问嵌套的JavaScript对象

使用字符串键访问嵌套的JavaScript对象

我有这样的数据结构:


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'

        }

    ]

};

我想使用这些变量访问数据:


var part1name = "part1.name";

var part2quantity = "part2.qty";

var part3name1 = "part3[0].name";

part1name应该用someObject.part1.name's值填充,即“Part 1”。part2quantity与60相同。


无论如何使用纯javascript或JQuery实现这一点?


慕勒3428872
浏览 701回答 5
5回答

呼如林

你必须自己解析字符串:function getProperty(obj, prop) {&nbsp; &nbsp; var parts = prop.split('.');&nbsp; &nbsp; if (Array.isArray(parts)) {&nbsp; &nbsp; &nbsp; &nbsp; var last = parts.pop(),&nbsp; &nbsp; &nbsp; &nbsp; l = parts.length,&nbsp; &nbsp; &nbsp; &nbsp; i = 1,&nbsp; &nbsp; &nbsp; &nbsp; current = parts[0];&nbsp; &nbsp; &nbsp; &nbsp; while((obj = obj[current]) && i < l) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; current = parts[i];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if(obj) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return obj[last];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; throw 'parts is not valid array';&nbsp; &nbsp; }}这要求您还使用点表示法定义数组索引:var part3name1 = "part3.0.name";它使解析更容易。DEMO
打开App,查看更多内容
随时随地看视频慕课网APP