如何从对象中获取成员名称?

时间:2012-01-03 16:43:59

标签: javascript

  

可能重复:
  Getting JavaScript object key list
  How to iterate json data in jquery

我有一个像这样的json:

var myJSONObject = {
                    "flowers": [
                        {"id":"1","name":"Red Flower","url":"flower_1.png"},
                        {"id":"2","name":"Purple Flower","url":"flower_2.png"},
                        {"id":"3","name":"Yellow Flower","url":"flower_3.png"},
                        {"id":"4","name":"Violet Flower","url":"flower_4.png"},
                        {"id":"5","name":"Purple Flower","url":"flower_5.png"}
                    ],
                    "bouquet": [
                        {"first":[1,2,3,4,5,6]},
                        {"second":[1,2,3,4,5,6]},
                        {"third":[1,2,3,4,5,6]}
                    ]
            };

现在我的命令是如何只将“花束”成员的名字拉到数组中。 看起来像那样的东西:[“第一”,“第二”,“第三”]?

3 个答案:

答案 0 :(得分:3)

在最近的Firefox浏览器中,可以使用以下内容(所谓的Array-comprehensions):

var list = [Object.keys(i)[0] for each (i in myJSONObject.bouquet)];

如果支持Object.keys,请使用:

var list = [];                        // Create list
for (var i=0; i<myJSONObject.bouquet.length; i++) {
    var keys = Object.keys(myJSONObject.bouquet[i]); //List keys
    list.push(keys[0]);               // Store first named key
}

在其他浏览器中,您可以使用:

var list = [];                        // Create list
for (var i=0; i<myJSONObject.bouquet.length; i++) {
    var key = myJSONObject.bouquet[i];
    for (var j in key) {              // Get the first named key
        list.push(j);                 // Store named key
        break;                        // <--- First named key, so break loop
    }
}

答案 1 :(得分:1)

for(var i=0; i< myJSONObject["bouquet"].length; i++)
{
  var o = myJSONObject["bouquet"][i];
  document.write(Object.keys(o) + "<br>");
}
  

输出:第一个第二个第三个

JSFiddle for confirmation

答案 2 :(得分:0)

如果您所在的环境支持现代ECMA添加,您可以使用Object.keys(文档here),也可以根据需要填写自己的内容,如下所示:

function getKeys(obj) {
    var ret = [], prop;

    for (prop in obj) {
        if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {
            ret.push( prop );
        }
    }

    return ret;
};

用法:

var keys = getKeys({ foo: "a", bar: "b" }); // -> ['foo', 'bar']
希望有所帮助!欢呼声。