访问在对象数组中具有未知属性名称的生成属性

dij*_*jon 5 javascript arrays object

使用以下生成的数组示例结构,如何循环并从每个对象中提取属性名称及其关联值?

[{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}]
Run Code Online (Sandbox Code Playgroud)

对象的数量可能会更改,并且属性名称将不一致.

m0m*_*eni 5

您可以使用Object.keys()[0]获取密钥,然后使用密钥获取值.

的jsfiddle

var myData = [{"bg_2":"0.50"},{"bg_7":"0.10"},{"bg_12":"0.20"}];

for (var i = 0; i < myData.length; i++) {
    var myObject = myData[i];
    var firstKey = Object.keys(myObject)[0];
    var value = myObject[firstKey];

    console.log(firstKey + ": " + value);
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:ECMAScript®语言规范:15.2.3.14 Object.keys(O)


小智 5

扩展@AR7答案,在每个对象中可能有多个属性的情况下,您可以缓存返回的对象Object.keys()并循环遍历数组循环中的每个属性。

使用下面的方法,您可以处理对象内任意数量的属性。

我意识到在这种特定情况下这可能不会比上述答案更有用,但希望它对未来的观众有用。

JSFiddle

var a = [
    { "bg_2":"0.50", "bg_7":"0.10", "bg_12":"0.20"},
    { "bg_2":"0.50", "bg_7":"0.10"},
    { "bg_2":"0.50"}
];

a.forEach(function(o){
    console.log(o);
    var k = Object.keys(o);
    for(var i in k)
        console.log(k[i], ':', o[k[i]]);
});
Run Code Online (Sandbox Code Playgroud)