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

How can I get member names from an object?

本文关键字:成员 获取 对象      更新时间:2023-09-26

可能的重复项:
获取 JavaScript 对象键列表
如何在jquery中迭代json数据

我有一个像这样的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]}
                    ]
            };

现在我的追求是我怎么能只拉"花束"成员的名字......到数组中。看起来像这样的东西:["第一","第二","第三"]?

在最近的 Firefox 浏览器中,可以使用以下内容(所谓的数组推导(:

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

输出:第一、第二第三

用于确认的 JSFiddle

如果您处于支持现代 ECMA 添加的环境中,您可以使用 Object.keys(此处的文档(,或者如果需要,您可以填充自己的,如下所示:

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']

希望对您有所帮助! 干杯。